ПочатиПочніть безкоштовно

vapply() проти sapply()

У попередньому прикладі sapply() не зміг спростити результат, оскільки елемент date у market_crash2 мав два класи (POSIXct і POSIXt). Зверніть увагу, що помилки при цьому не було! Якби ваша функція очікувала, що sapply() поверне спрощений вектор, це могло б збити з пантелику.

Щоб це врахувати, існує більш сувора функція з родини apply — vapply(). Вона містить додатковий аргумент FUN.VALUE, у якому ви вказуєте тип і довжину вихідних даних, які мають повертатися щоразу при виклику вашої функції.

Якщо ви очікуєте, що значення, яке повертає class(), — це символьний вектор довжини 1, ви можете вказати це через vapply():

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

Інші приклади FUN.VALUE: numeric(2) або logical(1). market_crash2 знову визначено для вас.

Ця вправа є частиною курсу

Середній рівень R для фінансів

Переглянути курс

Інструкції до вправи

  • Знову використайте sapply(), щоб знайти class() елементів market_crash2. Зверніть увагу, що він повертає список, а не помилку.
  • Застосуйте vapply() до market_crash2, щоб визначити class(). Укажіть FUN.VALUE = character(1). Має коректно завершитися помилкою.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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()
___
Редагувати та запускати код