lapply i funkcje anonimowe
Pisanie własnych funkcji i używanie ich wewnątrz lapply() to prawdziwe osiągnięcie! Definiowanie funkcji tylko po to, by użyć ich raz, bywa jednak zbędne. Właśnie dlatego w R można korzystać z tzw. funkcji anonimowych.
Wiesz już, że funkcje w R są pełnoprawnymi obiektami. Oznacza to, że nie są automatycznie powiązane z żadną nazwą. Tworząc funkcję, możesz użyć operatora przypisania, aby nadać jej nazwę – ale możesz też tego nie robić. Funkcja bez nazwy to właśnie funkcja anonimowa:
# Funkcja nazwana
triple <- function(x) { 3 * x }
# Funkcja anonimowa z taką samą implementacją
function(x) { 3 * x }
# Użycie funkcji anonimowej wewnątrz lapply()
lapply(list(1,2,3), function(x) { 3 * x })
split_low jest już dla ciebie zdefiniowane.
To ćwiczenie jest częścią kursu
Intermediate R
Instrukcje do ćwiczenia
- Przekształć pierwsze wywołanie
lapply()tak, aby używało funkcji anonimowej robiącej to samo. - W podobny sposób zamień drugie wywołanie
lapplyna wersję używającą anonimowej funkcji zamiastselect_second(). - Usuń definicje obu funkcji –
select_first()iselect_second()– ponieważ nie są już potrzebne.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)