Začněte nyníZačněte zdarma

vapply() vs. sapply()

V předchozím příkladu sapply() nedokázalo výsledek zjednodušit, protože prvek date v market_crash2 měl dvě třídy (POSIXct a POSIXt). Všimni si ale, že žádná chyba nebyla vyvolána! Pokud by funkce, kterou jsi napsal/a, očekávala zjednodušený vektor vrácený pomocí sapply(), mohlo by to způsobit zmatek.

Aby ses s tímto vypořádal/a, existuje přísnější apply funkce vapply(), která obsahuje extra argument FUN.VALUE. V něm můžeš určit typ a délku výstupu, který má být vrácen při každém volání aplikované funkce.

Pokud očekáváš, že návratová hodnota class() bude znakový vektor délky 1, můžeš to specifikovat pomocí vapply():

vapply(market_crash, class, FUN.VALUE = character(1))
dow_jones_drop           date 
     "numeric"         "Date"

Další příklady hodnoty FUN.VALUE mohou být numeric(2) nebo logical(1). market_crash2 je pro tebe opět předem definováno.

Toto cvičení je součástí kurzu

Intermediate R for Finance

Zobrazit kurz

Pokyny k cvičení

  • Použij znovu sapply() k zjištění třídy (class()) prvků market_crash2. Všimni si, že vrátí seznam, nikoli chybu.
  • Použij vapply() na market_crash2 k zjištění třídy (class()). Nastav FUN.VALUE = character(1). Tentokrát by to mělo správně selhat.

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.POSIXct()
market_crash2 <- list(dow_jones_drop = 777.68, 
                      date = as.POSIXct("2008-09-28"))

# Find the classes with sapply()
___

# Find the classes with vapply()
___
Upravit a spustit kód