在資料框上使用 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
___