Când simplificarea eșuează
Pentru utilizarea interactivă, sapply() este excelentă. Ghicește tipul rezultatului pentru a-l simplifica, iar de obicei asta funcționează bine. Totuși, sapply() nu este o opțiune sigură atunci când scrii funcții. Dacă sapply() nu poate simplifica rezultatul, va returna implicit o listă, la fel ca lapply(). Acest lucru poate fi periculos și poate strica funcțiile personalizate dacă le-ai scris așteptând că sapply() va returna un vector simplificat.
Hai să analizăm un exercițiu folosind o listă cu informații despre prăbușirea pieței bursiere din 2008.
Acest exercițiu face parte din cursul
R intermediar pentru finanțe
Instrucțiuni pentru exercițiu
Lista market_crash a fost creată pentru tine.
- Folosește
sapply()pentru a obțineclass()fiecărui element dinmarket_crash.
O nouă listă, market_crash2, a fost creată. Diferența constă în modul de creare a datei!
- Folosește
lapply()pentru a obțineclass()fiecărui element dinmarket_crash2. - Folosește
sapply()pentru a obțineclass()fiecărui element dinmarket_crash2.
Elementul date din market_crash2 are mai multe clase. De ce nu a putut sapply() să simplifice rezultatul?
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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()
___