Menu
Coddy logo textTech

Namen durchlaufen

Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 10 von 64.

Eine for-Schleife über names(x) besucht jeden Schlüssel, und x[[key]] liefert den Wert für diesen Schlüssel:

scores <- c(ada = 91, bo = 78, cy = 85)
for (name in names(scores)) {
  cat(name, "scored", scores[[name]], "\n")
}

Ausgabe:

ada scored 91 
bo scored 78 
cy scored 85 

Einträge behalten die Reihenfolge bei, in der sie hinzugefügt wurden. Durchlaufe sort(names(x)) für alphabetische Reihenfolge:

scores <- c(cy = 85, ada = 91, bo = 78)
for (name in sort(names(scores))) {
  cat(name, scores[[name]], "\n")
}

Ausgabe:

ada 91 
bo 78 
cy 85 

Das Durchlaufen der Eingabe und Aktualisieren einer Nachschlagetabelle zählt, wie oft jeder Wert vorkommt. Beim ersten Auftreten eines Wortes erhält es den Wert 1, danach wird dieser jeweils um 1 erhöht:

words <- c("red", "blue", "red", "green", "red")
counts <- c()
for (w in words) {
  if (w %in% names(counts)) {
    counts[w] <- counts[w] + 1
  } else {
    counts[w] <- 1
  }
}
print(counts[["red"]])
print(names(counts))

Ausgabe:

[1] 3
[1] "red"   "blue"  "green"

Um Ausgabezeilen zu erstellen, sammle sie innerhalb der Schleife in einem Vektor und gib sie am Ende zurück oder drucke sie aus:

scores <- c(ada = 91, bo = 78)
lines <- c()
for (name in names(scores)) {
  lines <- c(lines, paste0(name, ": ", scores[[name]]))
}
cat(lines, sep = "\n")

Ausgabe:

ada: 91
bo: 78
challenge icon

Aufgabe

Einfach

Vervollständige word_counts(words). Gib für jedes unterschiedliche Wort eine Zeile in alphabetischer Reihenfolge zurück, formatiert als word: count.

Der bereitgestellte Code liest die Wörter als eine durch Leerzeichen getrennte Zeile ein und gibt jede zurückgegebene Zeile aus.

Probier es selbst

word_counts <- function(words) {
  # Schreibe deinen Code hier
  character(0)
}

# Bereitgestellter Ein-/Ausgabecode: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(word_counts(strsplit(input[1], " ")[[1]]), sep = "\n")
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 Logik und Ablaufsteuerung

Übe selbstständig: Online-R-Compiler