Iterieren über Zeichen (strsplit)
Teil des Abschnitts Grundlagen der R-Journey von Coddy — Lektion 65 von 78.
Was ist, wenn Sie jedes Zeichen in einer Zeichenkette einzeln verarbeiten müssen? Im Gegensatz zu Vektoren können Sie in R nicht direkt eine Schleife über die Zeichen einer Zeichenkette ausführen. Die Funktion strsplit() löst dies, indem sie eine Zeichenkette in einen Vektor von Zeichen aufteilt.
Die Funktion strsplit() nimmt zwei Argumente entgegen: die zu teilende Zeichenkette und das Trennzeichen. Um in einzelne Zeichen aufzuteilen, verwenden Sie eine leere Zeichenkette "" als Trennzeichen:
word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)Ausgabe:
[1] "h" "e" "l" "l" "o"Beachten Sie das [[1]] am Ende. Dies liegt daran, dass strsplit() eine Liste zurückgibt und wir das erste Element extrahieren müssen, um unseren Zeichenvektor zu erhalten. Sobald Sie die Zeichen als Vektor haben, können Sie diese mit den Techniken iterieren, die Sie bereits gelernt haben:
word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
print(char)
}Ausgabe:
[1] "R"Diese Technik ist essenziell für Aufgaben wie das Zählen bestimmter Zeichen, das Umkehren von Zeichenfolgen oder das Validieren von Eingaben Zeichen für Zeichen.
Aufgabe
EinfachSie erhalten eine einzelne Eingabezeile, die ein Wort enthält (z. B. programming).
Verwenden Sie strsplit(), um die Zeichenfolge in einzelne Zeichen aufzuteilen:
- Teilen Sie das Eingabewort in einen Vektor von Zeichen auf
- Iterieren Sie in einer Schleife durch jedes Zeichen im Vektor
- Zählen Sie, wie oft der Buchstabe
"a"im Wort vorkommt (Groß-/Kleinschreibung beachten) - Geben Sie jedes Zeichen in einer eigenen Zeile mit
print()aus - Geben Sie nach der Schleife die Anzahl mit
cat()im FormatCount of 'a': Xgefolgt von einem Zeilenumbruch aus
Wenn die Eingabe zum Beispiel wie folgt lautet:
bananaSollte die Ausgabe wie folgt aussehen:
[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3Erklärung: Das Wort "banana" wird in die Zeichen c("b", "a", "n", "a", "n", "a") aufgeteilt. Jedes Zeichen wird ausgegeben, und der Buchstabe "a" erscheint 3 Mal.
Spickzettel
Um einen String in einzelne Zeichen aufzuteilen, verwenden Sie strsplit() mit einem leeren String "" als Trennzeichen:
word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)Ausgabe:
[1] "h" "e" "l" "l" "o"Das [[1]] extrahiert das erste Element aus der von strsplit() zurückgegebenen Liste und liefert Ihnen einen Character-Vektor.
Sie können dann eine Schleife über die Zeichen ausführen:
word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
print(char)
}Probier es selbst
# Eingabe lesen
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))
# Zähler für den Buchstaben 'a' initialisieren
count_a <- 0
# TODO: Schreiben Sie Ihren Code unten
# 1. Verwenden Sie strsplit(), um das Wort in einzelne Zeichen aufzuteilen
# 2. Durchlaufen Sie jedes Zeichen in einer Schleife
# 3. Geben Sie jedes Zeichen mit print() aus
# 4. Zählen Sie, wie oft 'a' vorkommt
# Ausgabe der Anzahl von 'a'
cat("Count of 'a': ", count_a, "\n", sep = "")Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren (AND, OR)Logische Operatoren Teil 2 (NOT)Wiederholung – Einfache LogikVektorisierte Logik Teil 1Vektorisierte Logik Teil 27Rechnungs-Split-Rechner
WillkommensnachrichtBenutzereingaben abfragen10FizzBuzz mit einer Besonderheit
SpielübersichtDie FizzBuzz-Funktion13Vektoren für Fortgeschrittene
Vektor-Slicing und IndizierungLogische IndizierungVektorarithmetik & RecyclingDer %in%-Operator2Variablen und Datentypen
Numerischer DatentypGanzzahl-DatentypZeichen-DatentypLogischer DatentypDatentypen prüfenBenennungskonventionenFehlende Werte: NAZusammenfassung – Variablenerstellung5Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakNext (Continue)Rückblick - FakultätSequenzgenerierung (seq, :)Verschachtelte SchleifenRückblick - Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenGanzzahlige Division und ModuloZuweisungsoperatorenWiederholung - Einfache MathematikVergleichsoperatoren6Grundlagen der Ein- und Ausgabe
Print-AusgabeCat zur AusgabeAusgabe mit VariablenEingabe lesen mit readline()Grundlagen der TypumwandlungWiederholung – AltersrechnerWiederholung – Wahr oder Falsch9Funktionen
Funktionen deklarierenFunktionsargumenteRückgabewerteWiederholung - Sigma-FunktionWiederholung - ValidierungsfunktionStandard-Parameterwerte12Iterieren über Sequenzen
Iterieren über VektorelementeVerwendung von seq_along()Iterieren über Zeichen (strsplit)String-Manipulationsfunktionen