När förenkling misslyckas
För interaktivt bruk är sapply() utmärkt. Funktionen gissar utdatatypen för att kunna förenkla resultatet, och oftast fungerar det bra. Däremot är sapply() inte ett säkert val när du skriver egna funktioner. Om sapply() inte kan förenkla utdatan returnerar den en lista – precis som lapply(). Det kan orsaka problem och bryta egna funktioner om du har skrivit dem med förväntningen att sapply() ska returnera en förenklad vektor.
Låt oss titta på en övning med en lista som innehåller information om börskraschen 2008.
Den här övningen är en del av kursen
R för finans – fortsättningskurs
Övningsinstruktioner
Listan market_crash har skapats åt dig.
- Använd
sapply()för att hämtaclass()för varje element imarket_crash.
En ny lista, market_crash2, har skapats. Skillnaden ligger i hur datumet skapas!
- Använd
lapply()för att hämtaclass()för varje element imarket_crash2. - Använd
sapply()för att hämtaclass()för varje element imarket_crash2.
date i market_crash2 har flera klasser. Varför kunde sapply() inte förenkla resultatet?
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()
___