lapply() применительно к датафрейму
Что если вместо списка у вас есть датафрейм с доходностями акций — можно ли всё равно использовать lapply()? Да! И это может удивить: датафреймы в R на самом деле являются списками «под капотом», поэтому вызов lapply() применит функцию к каждому столбцу датафрейма.
df
a b
1 1 4
2 2 6
class(df)
[1] "data.frame"
lapply(df, FUN = sum)
$a
[1] 3
$b
[1] 10
lapply() просуммировал каждый столбец датафрейма, при этом сохранив стандартное поведение — результат всегда возвращается в виде списка. Для выполнения упражнения подготовлен датафрейм stock_return с дневными доходностями акций в виде десятичных дробей.
Это упражнение является частью курса
Средний уровень R для финансов
Инструкции к упражнению
- Выведите
stock_return, чтобы ознакомиться со структурой датафрейма. - Используйте
lapply(), чтобы вычислить среднее значение (mean) по каждому столбцу. - Создайте функцию для расчёта коэффициента Шарпа: она должна вычислить среднее доходностей, вычесть безрисковую ставку (
.03%) и разделить результат на стандартное отклонение доходностей. - Используйте
lapply(), чтобы рассчитать коэффициент Шарпа для каждого столбца.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Print stock_return
___
# lapply to get the average returns
___
# Sharpe ratio
sharpe <- function(returns) {
(___ - .0003) / ___
}
# lapply to get the sharpe ratio
___