Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

Lista market_crash została już dla ciebie utworzona.

  • Użyj sapply(), aby pobrać class() każdego elementu listy market_crash.


Utworzono nową listę – market_crash2. Różnica tkwi w sposobie zapisania daty!

  • Użyj lapply(), aby pobrać class() każdego elementu listy market_crash2.
  • Użyj sapply(), aby pobrać class() każdego elementu listy market_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()
___
Edytuj i uruchom kod