Zeichen iterieren (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 aus Zeichen aufteilt.
Die strsplit()-Funktion 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 Zeichenketten oder das Validieren von Eingaben Zeichen für Zeichen.
Aufgabe
EinfachDu erhältst eine einzelne Eingabezeile, die ein Wort enthält (z. B. programming).
Verwende strsplit(), um die Zeichenkette in einzelne Zeichen aufzuteilen:
- Teile das Eingabewort in einen Zeichenvektor auf
- Durchlaufe jedes Zeichen im Vektor
- Zähle, wie oft der Buchstabe
"a"im Wort vorkommt (unter Beachtung der Groß- und Kleinschreibung) - Gib jedes Zeichen mit
print()in einer eigenen Zeile aus - Gib nach der Schleife die Anzahl mit
cat()im folgenden Format aus:Count of 'a': X, gefolgt von einem Zeilenumbruch
Wenn die Eingabe beispielsweise lautet:
bananasollte die Ausgabe folgendermaßen 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“ kommt 3-mal vor.
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: Schreibe deinen Code unten
# 1. Verwende strsplit(), um das Wort in einzelne Zeichen aufzuteilen
# 2. Durchlaufe jedes Zeichen in einer Schleife
# 3. Gib jedes Zeichen mit print() aus
# 4. Zähle, 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 27Rechner zum Teilen der Rechnung
BegrüßungsnachrichtBenutzereingaben erfassen10FizzBuzz mit einer Wendung
SpielübersichtDie FizzBuzz-Funktion13Fortgeschrittene Vektoren
Vektor-Slicing und -IndizierungLogische IndizierungVektorarithmetik & RecyclingDer %in%-Operator2Variablen und Datentypen
Numerischer DatentypGanzzahliger DatentypZeichen-DatentypLogischer DatentypDatentypen überprüfenNamenskonventionenFehlende Werte: NAZusammenfassung – Variablen erstellen5Entscheidungen treffen
If-AnweisungIf - ElseWiederholung – Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakNext (Continue)Wiederholung – FakultätSequenzgenerierung (seq, :)Verschachtelte SchleifenWiederholung – Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenGanzzahldivision und ModuloZuweisungsoperatorenRückblick – Einfache MathematikVergleichsoperatoren6Grundlegende Ein- und Ausgabe
Ausgabe mit printcat zur AusgabeAusgabe mit VariablenEingaben mit readline() lesenGrundlagen der TypkonvertierungRückblick – AltersrechnerRückblick – Wahr oder falsch9Funktionen
Eine Funktion deklarierenFunktionsargumenteRückgabewerteWiederholung – Sigma-FunktionWiederholung – ValidierungsfunktionStandardparameterwerte12Über Sequenzen iterieren
Über Vektorelemente iterierenseq_along() verwendenZeichen iterieren (strsplitFunktionen zur String-ManipulationÜbe selbstständig: Online-R-Compiler