Menu
Coddy logo textTech

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.

challenge icon

Aufgabe

Einfach

Sie erhalten eine einzelne Eingabezeile, die ein Wort enthält (z. B. programming).

Verwenden Sie strsplit(), um die Zeichenfolge in einzelne Zeichen aufzuteilen:

  1. Teilen Sie das Eingabewort in einen Vektor von Zeichen auf
  2. Iterieren Sie in einer Schleife durch jedes Zeichen im Vektor
  3. Zählen Sie, wie oft der Buchstabe "a" im Wort vorkommt (Groß-/Kleinschreibung beachten)
  4. Geben Sie jedes Zeichen in einer eigenen Zeile mit print() aus
  5. Geben Sie nach der Schleife die Anzahl mit cat() im Format Count of 'a': X gefolgt von einem Zeilenumbruch aus

Wenn die Eingabe zum Beispiel wie folgt lautet:

banana

Sollte die Ausgabe wie folgt aussehen:

[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3

Erklä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 = "")
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen