Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

Listan market_crash har skapats åt dig.

  • Använd sapply() för att hämta class() för varje element i market_crash.


En ny lista, market_crash2, har skapats. Skillnaden ligger i hur datumet skapas!

  • Använd lapply() för att hämta class() för varje element i market_crash2.
  • Använd sapply() för att hämta class() för varje element i market_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()
___
Redigera och kör kod