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
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)