lapply und sapply
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 32 von 64.
lapply(x, f) ruft f für jedes Element von x auf und gibt die Ergebnisse in einer Liste zurück, ein Element pro Eingabe:
squares <- lapply(1:3, function(i) i^2)
print(length(squares))
print(squares[[3]])Ausgabe:
[1] 3
[1] 9sapply() macht dasselbe und vereinfacht das Ergebnis: Wenn jeder Aufruf einen Wert zurückgibt, erhältst du statt einer Liste einen einfachen Vektor:
print(sapply(1:3, function(i) i^2))
print(sapply(c(4, 9, 16), sqrt))Ausgabe:
[1] 1 4 9
[1] 2 3 4Bei einem Zeichenvektor benennt sapply() die Ergebnisse nach den Eingaben. Füge USE.NAMES = FALSE für einen einfachen Vektor hinzu:
words <- c("tea", "coffee")
print(sapply(words, nchar))
print(sapply(words, nchar, USE.NAMES = FALSE))Ausgabe:
tea coffee
3 6
[1] 3 6Diese Funktionen ersetzen die Schleife, die ein Ergebnis Element für Element aufbaut. Beide untenstehenden Versionen berechnen, wie viele Vokale jedes Wort enthält:
words <- c("banana", "sky", "idea")
vowels <- function(w) sum(strsplit(w, "")[[1]] %in% c("a", "e", "i", "o", "u"))
counts <- c()
for (w in words) counts <- c(counts, vowels(w))
print(counts)
print(sapply(words, vowels, USE.NAMES = FALSE))Ausgabe:
[1] 3 0 3
[1] 3 0 3Aufgabe
EinfachVervollständige vowel_counts(words). Gib eine Zeile pro Wort zurück, banana: 3, mit der Anzahl der Vokale (a, e, i, o, u) im Wort. Verwende sapply(), um die Vokale aller Wörter zu zählen.
Der bereitgestellte Code liest die Wörter als durch Kommas getrennte Zeile aus Wörtern in Kleinbuchstaben ein und gibt jede zurückgegebene Zeile aus.
Probier es selbst
vowel_counts <- function(words) {
# Schreibe deinen Code hier
character(0)
}
# Mitgelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(vowel_counts(strsplit(input[1], ",")[[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