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
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 Funktionselect_second()
verwendet wird. - Entferne die beiden Definitionen von
select_first()
undselect_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)