1. Learn
  2. /
  3. 课程
  4. /
  5. R dla finansów – poziom średnio zaawansowany

Connected

道练习

vapply() vs. sapply()

W poprzednim przykładzie sapply() nie zdołało uprościć wyniku, ponieważ element date obiektu market_crash2 miał dwie klasy (POSIXct i POSIXt). Zwróć uwagę, że nie został zgłoszony żaden błąd! Gdyby jakaś funkcja zakładała, że sapply() zwróci uproszczony wektor, mogłoby to prowadzić do trudnych do wykrycia problemów.

Aby temu zaradzić, istnieje bardziej restrykcyjna funkcja apply – vapply(). Przyjmuje ona dodatkowy argument FUN.VALUE, w którym możesz określić typ i długość wyniku zwracanego przy każdym wywołaniu zastosowanej funkcji.

Jeśli oczekujesz, że class() zwróci wektor znakowy o długości 1, możesz to określić za pomocą vapply():

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

Inne przykłady wartości FUN.VALUE to na przykład numeric(2) lub logical(1). Obiekt market_crash2 jest ponownie zdefiniowany i gotowy do użycia.

说明

100 XP
  • Użyj ponownie sapply(), aby znaleźć class() elementów obiektu market_crash2. Zwróć uwagę, że funkcja zwraca listę, a nie błąd.
  • Użyj vapply() na obiekcie market_crash2, aby znaleźć class(). Ustaw FUN.VALUE = character(1). Tym razem funkcja powinna odpowiednio zgłosić błąd.