行方向の合計を計算する
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 = ___
)