始める無料で始める

sapply() と lapply() の違い

lapply() は便利ですが、返り値をリストではなく、もう少し扱いやすい形にしたいことがあります。たとえばシャープレシオなら、リストではなくベクトルで返ってきたほうが便利ですよね。後続の分析も楽になります。

そのために使えるのが sapply()(simplify apply)です。基本的な動作は lapply() と同じですが、可能なら出力を簡約化(ベクトルや行列などに変換)しようとします。基本の書式は同じで、いくつか追加の引数があります。

sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)

これらのオプション引数で、出力を簡約化するかどうか、そして出力に元のオブジェクトの名前を使うかどうかを指定できます。

この演習では、sapply() を使ってシャープレシオを再計算し、出力を簡約化してみます。stock_returnsharpe 関数は用意されています。

この演習はコースの一部です

金融のための中級R

コースを見る

演習の手順

  • まず、lapply()stock_return に適用して、シャープレシオを再度計算します。
  • 次に、sapply()stock_return に適用して、簡約化されたシャープレシオの出力を確認します。
  • sapply()stock_return に適用し、引数に simplify = FALSEUSE.NAMES = FALSE を指定してシャープレシオを取得します。これは lapply() と同等です!

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# lapply() on stock_return
___

# sapply() on stock_return
___

# sapply() on stock_return with optional arguments
___
コードを編集して実行