sapply() と lapply() の違い
lapply() は便利ですが、返り値をリストではなく、もう少し扱いやすい形にしたいことがあります。たとえばシャープレシオなら、リストではなくベクトルで返ってきたほうが便利ですよね。後続の分析も楽になります。
そのために使えるのが sapply()(simplify apply)です。基本的な動作は lapply() と同じですが、可能なら出力を簡約化(ベクトルや行列などに変換)しようとします。基本の書式は同じで、いくつか追加の引数があります。
sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
これらのオプション引数で、出力を簡約化するかどうか、そして出力に元のオブジェクトの名前を使うかどうかを指定できます。
この演習では、sapply() を使ってシャープレシオを再計算し、出力を簡約化してみます。stock_return と sharpe 関数は用意されています。
この演習はコースの一部です
金融のための中級R
演習の手順
- まず、
lapply()をstock_returnに適用して、シャープレシオを再度計算します。 - 次に、
sapply()をstock_returnに適用して、簡約化されたシャープレシオの出力を確認します。 sapply()をstock_returnに適用し、引数にsimplify = FALSEとUSE.NAMES = FALSEを指定してシャープレシオを取得します。これはlapply()と同等です!
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# lapply() on stock_return
___
# sapply() on stock_return
___
# sapply() on stock_return with optional arguments
___