始める無料で始める

行方向の合計を計算する

2つ目のボトルネックは、行方向の合計の計算でした。

total <- apply(d, 1, sum)

前の演習では、基になるオブジェクトを行列に切り替えました。これにより、上の apply の処理は3倍高速になりました。 ただし、もう一段の最適化が可能です。apply()rowSums() に置き換えましょう。

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

効率的なRコードの書き方

コースを見る

演習の手順

  • rowSums() を使って r_sum() 関数を完成させてください。
  • microbenchmark() 関数を使って、app()r_sum() の実行時間を比較してください。

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

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

# Example data
rolls

# Define the previous solution 
app <- function(x) {
    apply(x, 1, sum)
}

# Define the new solution
r_sum <- function(x) {
    ___(x)
}

# Compare the methods
microbenchmark(
    app_sol = app(rolls),
    r_sum_sol = ___
)
コードを編集して実行