Když zjednodušení selže
Pro interaktivní použití je sapply() skvělá volba. Automaticky odhadne typ výstupu a podle toho ho zjednoduší – a většinou to funguje bez problémů. Při psaní vlastních funkcí ale sapply() není bezpečná volba. Pokud sapply() nedokáže výstup zjednodušit, vrátí seznam stejně jako lapply(). To může být záludné a rozbít vlastní funkce, pokud jsi počítal/a s tím, že sapply() vrátí zjednodušený vektor.
Podívejme se na cvičení se seznamem obsahujícím informace o burzovním krachu v roce 2008.
Toto cvičení je součástí kurzu
Intermediate R for Finance
Pokyny k cvičení
Seznam market_crash je pro tebe připravený.
- Pomocí
sapply()zjisticlass()každého prvku vmarket_crash.
Byl vytvořen nový seznam market_crash2. Rozdíl spočívá ve způsobu vytvoření data!
- Pomocí
lapply()zjisticlass()každého prvku vmarket_crash2. - Pomocí
sapply()zjisticlass()každého prvku vmarket_crash2.
Položka date v market_crash2 má více tříd. Proč sapply() nedokázala výstup zjednodušit?
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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()
___