1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Intermediate R for Finance

Connected

cvičení

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.

Pokyny

100 XP
  • 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.