在数据框上使用 lapply()
如果不是列表,而是一个包含股票收益的数据框,是否还能使用 lapply()?可以!也许出乎意料,数据框在底层其实就是列表,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
___