1. Learn
  2. /
  3. Courses
  4. /
  5. Rcpp で R コードを最適化する

Connected

Exercise

ローリング平均(C++)

ベクトル化したローリング平均関数 rollmean3() は性能は良かったものの、可読性がとても低いものでした。このコードがローリング平均を計算していると判断するのは難しく、結果としてデバッグや保守が大変になります。

2 つ目のバージョン rollmean2() は遅い代わりに読みやすくなりました。これを C++ に翻訳できれば、読みやすさと高速性の両方を期待できます。

rollmean2() はワークスペース内で定義されています。どのように動くか思い出すために、定義を表示して確認してもかまいません。これから rollmean2() を C++ に翻訳し、rollmean4() として実装します。

Instructions

100 XP
  • res を、長さが n で、値は NumericVector の get_na() メソッドで与えられる NumericVector として設定します。
  • total を、x の最初の window 個の値として計算します。
  • window - 1 の位置での平均を、合計をウィンドウ幅で割って計算します。
  • 2 つ目のループでは、x の i - window 番目の要素を引き、i 番目の要素を足して、合計を更新します。