Quando la semplificazione fallisce
Per l'uso interattivo, sapply() è ottimo. Prova a indovinare il tipo di output per poter semplificare, e di solito va bene. Tuttavia, sapply() non è un'opzione sicura quando scrivi funzioni. Se sapply() non riesce a semplificare l'output, per impostazione predefinita restituirà una lista proprio come lapply(). Questo può essere rischioso e rompere funzioni personalizzate se le hai scritte aspettandoti che sapply() restituisse un vettore semplificato.
Vediamo un esercizio usando una lista che contiene informazioni sul crollo del mercato azionario del 2008.
Questo esercizio fa parte del corso
R intermedio per la finanza
Istruzioni dell'esercizio
La lista market_crash è già stata creata per te.
- Usa
sapply()per ottenere laclass()di ciascun elemento inmarket_crash.
È stata creata una nuova lista, market_crash2. La differenza sta nella creazione della data!
- Usa
lapply()per ottenere laclass()di ciascun elemento inmarket_crash2. - Usa
sapply()per ottenere laclass()di ciascun elemento inmarket_crash2.
date in market_crash2 ha più classi. Perché sapply() non è riuscito a semplificare?
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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()
___