Niet kunnen vereenvoudigen
Voor interactief gebruik is sapply() handig. Het raadt het outputtype zodat het kan vereenvoudigen, en dat is meestal prima. Maar sapply() is geen veilige keuze wanneer je functies schrijft. Als sapply() je output niet kan vereenvoudigen, valt het terug op het retourneren van een lijst, net als lapply(). Dat kan riskant zijn en aangepaste functies laten falen als je ervan uitging dat sapply() een vereenvoudigde vector zou teruggeven.
Laten we een oefening doen met een lijst met informatie over de beurscrash van 2008.
Deze oefening maakt deel uit van de cursus
R voor finance voor gevorderden
Oefeninstructies
De lijst market_crash is voor je klaargezet.
- Gebruik
sapply()om declass()van elk element inmarket_crashop te halen.
Er is een nieuwe lijst gemaakt: market_crash2. Het verschil zit in hoe de datum is aangemaakt!
- Gebruik
lapply()om declass()van elk element inmarket_crash2op te halen. - Gebruik
sapply()om declass()van elk element inmarket_crash2op te halen.
date in market_crash2 heeft meerdere classes. Waarom kon sapply() dit niet vereenvoudigen?
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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()
___