データフレームを行列に変える
profvis が強調表示したコードの一部は、出目の候補を生成してデータフレームに保存している行でした。
df <- data.frame(d1 = sample(1:6, 3, replace = TRUE),
d2 = sample(1:6, 3, replace = TRUE))
このコードは次の2点を改善することで最適化できます。
- データフレームから行列へ切り替える
- 6回分のサイコロの出目を1回で生成する
すると次のようになります。
m <- matrix(sample(1:6, 6, replace = TRUE), ncol = 2)
この演習はコースの一部です
効率的なRコードの書き方
演習の手順
- データフレーム解法
d()を読んで理解します。 - 行列の解法
m()を完成させます。m()は 6 要素・2 列のmatrixを生成する必要があります。
microbenchmark()関数を使って、d()とm()の処理時間を比較します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Load the microbenchmark package
___
# The previous data frame solution is defined
# d() Simulates 6 dices rolls
d <- function() {
data.frame(
d1 = sample(1:6, 3, replace = TRUE),
d2 = sample(1:6, 3, replace = TRUE)
)
}
# Complete the matrix solution
m <- function() {
___(sample(1:6, ___, replace = TRUE), ___)
}
# Use microbenchmark to time m() and d()
___(
data.frame_solution = d(),
matrix_solution = ___
)