lapply und anonyme Funktionen

Du kannst nun deine eigenen Funktionen schreiben und sie in lapply() verwenden – tolle Leistung! Aber eigentlich ist es doch etwas viel Aufwand, eine Funktion zu definieren, um sie dann nur einmal zu verwenden, oder? Deshalb gibt es in R sogenannte anonyme Funktionen.

Wie du schon gelernt hast, sind Funktionen in R eigenständige Objekte. Das bedeutet, sie sind nicht automatisch an einen Namen gebunden. Wenn du eine Funktion erstellst, kannst du ihr mit dem Zuweisungsoperator einen Namen geben. Es ist aber auch möglich, die Funktion ohne einen Namen zu nutzen. Dann sprechen wir von einer anonymen Funktion:

# Named function
triple <- function(x) { 3 * x }

# Anonymous function with same implementation
function(x) { 3 * x }

# Use anonymous function inside lapply()
lapply(list(1,2,3), function(x) { 3 * x })

split_low ist bereits definiert.

Diese Übung ist Teil des Kurses

R für Fortgeschrittene

Kurs anzeigen

Anleitung zur Übung

  • Ändere den ersten Aufruf von lapply() so, dass eine anonyme Funktion verwendet wird, die dasselbe tut.
  • Wandle in ähnlicher Weise den zweiten Aufruf von lapply um, damit eine anonyme Version der Funktion select_second() verwendet wird.
  • Entferne die beiden Definitionen von select_first() und select_second(), da sie nicht mehr gebraucht werden.

Interaktive Übung zum Anfassen

Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.

# split_low has been created for you
split_low

# Transform: use anonymous function inside lapply
select_first <- function(x) {
  x[1]
}
names <- lapply(split_low, select_first)

# Transform: use anonymous function inside lapply
select_second <- function(x) {
  x[2]
}
years <- lapply(split_low, select_second)