データフレームに対する 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を表示してください。 - 各列の平均(
mean)を得るためにlapply()を使ってください。 - シャープレシオ用の関数を作成してください。リターンの平均から無リスク金利(
.03%)を差し引き、その値をリターンの標準偏差で割ります。 - 各列のシャープレシオを計算するために
lapply()を使ってください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Print stock_return
___
# lapply to get the average returns
___
# Sharpe ratio
sharpe <- function(returns) {
(___ - .0003) / ___
}
# lapply to get the sharpe ratio
___