Когда упрощение невозможно
Для интерактивной работы sapply() — отличный выбор. Функция сама определяет тип вывода и упрощает результат, и в большинстве случаев это удобно. Однако использовать sapply() внутри пользовательских функций небезопасно. Если sapply() не удаётся упростить результат, она возвращает список — как и lapply(). Это может нарушить работу пользовательских функций, если они написаны в расчёте на упрощённый вектор.
Рассмотрим упражнение, в котором используется список с информацией о финансовом кризисе 2008 года.
Это упражнение является частью курса
Средний уровень R для финансов
Инструкции к упражнению
Список market_crash уже создан для вас.
- Используйте
sapply(), чтобы получитьclass()каждого элемента вmarket_crash.
Также создан новый список market_crash2. Отличие — в способе создания даты!
- Используйте
lapply(), чтобы получитьclass()каждого элемента вmarket_crash2. - Используйте
sapply(), чтобы получитьclass()каждого элемента вmarket_crash2.
Поле date в market_crash2 имеет несколько классов. Почему sapply() не смогла упростить результат?
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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()
___