Aufteilen und Verbinden
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 3 von 64.
strsplit(x, split) teilt eine Zeichenkette an jedem Trennzeichen. Die Funktion gibt eine Liste mit einem Zeichenvektor pro Eingabezeichenkette zurück. Verwende daher [[1]], um die Bestandteile einer einzelnen Zeichenkette zu erhalten.
csv <- "red,green,blue"
parts <- strsplit(csv, ",")[[1]]
print(parts)
print(length(parts))Ausgabe:
[1] "red" "green" "blue"
[1] 3paste() funktioniert in die andere Richtung. Mit collapse fügt es die Elemente eines Vektors zu einer einzigen Zeichenkette zusammen, wobei der Text collapse zwischen ihnen steht. sep steht zwischen den Argumenten, Element für Element.
words <- c("one", "two", "three")
print(paste(words, collapse = "-"))
print(paste(words, 1:3, sep = "_"))Ausgabe:
[1] "one-two-three"
[1] "one_1" "two_2" "three_3"Text aus der Eingabe enthält häufig Leerzeichen um die Trennzeichen. trimws() entfernt die Leerzeichen am Anfang und Ende jedes Elements:
raw <- " apples , pears,plums "
items <- trimws(strsplit(raw, ",")[[1]])
print(items)
print(paste(rev(items), collapse = " | "))Ausgabe:
[1] "apples" "pears" "plums"
[1] "plums | pears | apples"strsplit() auf einem Vektor gibt ein Listenelement pro Zeichenkette zurück, sodass jede Eingabezeile ihre eigenen Teile behält:
lines <- c("a,b", "c,d,e")
parts <- strsplit(lines, ",")
print(length(parts))
print(parts[[2]])Ausgabe:
[1] 2
[1] "c" "d" "e"Aufgabe
EinfachVervollständige hashtags(line). Die Zeile enthält durch Kommas getrennte Tags, möglicherweise mit Leerzeichen darum. Gib eine Zeichenkette zurück, bei der jedem Tag # vorangestellt ist und die durch einzelne Leerzeichen getrennt sind: r, data ,stats wird zu #r #data #stats.
Der bereitgestellte Code liest die Zeile ein und gibt den zurückgegebenen Wert aus.
Probier es selbst
hashtags <- function(line) {
# Schreibe deinen Code hier
line
}
# Mitgelieferter Ein-/Ausgabecode: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(hashtags(input[1]), sep = "\n")
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik und Ablaufsteuerung
1Strings im Detail
Teilstrings mit substr()Formatierung mit sprintf()Aufteilen und VerbindenStrings durchsuchenText ersetzenWiederholung – Benutzernamen-Generator4Matrizen
Matrizen erstellenMatrizen indizierenZusammenfassungen von Zeilen und SpaltenMatrizenarithmetikRückblick – Sitzplan10Fortgeschrittener Kontrollfluss
Die switch()-FunktionVektorisierter ifelse()repeat und breakRekursive FunktionenRückblick – Notenklassifizierung2Schlüssel-Wert-Suchen
Benannte Vektor-SuchenSchlüssel prüfenSchlüssel hinzufügen und entfernenNamen durchlaufenRückblick – Aktienübersicht5Projekt – Notenbuch
Schüler hinzufügenNoten eintragen3Mengen und Zählen
Eindeutige WerteMengenoperationenZugehörigkeitstestsZählen mit table()Rückblick – Gäste einer Veranstaltung6Funktionen als Werte
Anonyme FunktionenFunktionen übergebenFunktionen zurückgebenClosures mit ZustandRückblick – Rabattregeln9Datenrahmen
Datenrahmen erstellenSpalten und ZeilenZeilen filternHinzufügen und SortierenZusammenfassung – Verkaufsbericht12Projekt – Ausgaben-Tracker
Ausgaben erfassenGesamtausgabenÜbe selbstständig: Online-R-Compiler