Gdy uproszczenie się nie udaje
Do interaktywnego użytku sapply() sprawdza się świetnie. Funkcja ta samodzielnie rozpoznaje typ wyjścia i próbuje go uprościć – i zazwyczaj działa to bez zarzutu. Jednak sapply() nie jest bezpiecznym wyborem wewnątrz funkcji. Jeśli sapply() nie potrafi uprościć wyniku, domyślnie zwraca listę – tak jak lapply(). Może to być niebezpieczne i powodować błędy w funkcjach własnych, jeśli zostały napisane z założeniem, że sapply() zwróci uproszczony wektor.
Przyjrzyjmy się ćwiczeniu z listą zawierającą informacje o krachu na rynkach finansowych z 2008 roku.
To ćwiczenie jest częścią kursu
R dla finansów – poziom średnio zaawansowany
Instrukcje do ćwiczenia
Lista market_crash została już dla ciebie utworzona.
- Użyj
sapply(), aby pobraćclass()każdego elementu listymarket_crash.
Utworzono nową listę – market_crash2. Różnica tkwi w sposobie zapisania daty!
- Użyj
lapply(), aby pobraćclass()każdego elementu listymarket_crash2. - Użyj
sapply(), aby pobraćclass()każdego elementu listymarket_crash2.
Element date w market_crash2 ma wiele klas. Dlaczego sapply() nie mogło wykonać uproszczenia?
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Market crash with as.Date()
market_crash <- list(dow_jones_drop = 777.68,
date = as.Date("2008-09-28"))
# Find the classes with sapply()
___
# Market crash with as.POSIXct()
market_crash2 <- list(dow_jones_drop = 777.68,
date = as.POSIXct("2008-09-28"))
# Find the classes with lapply()
___
# Find the classes with sapply()
___