把 data frame 改成 matrix
profvis 標示出的其中一段程式,是用來產生所有可能的擲骰結果並把結果存成 data frame 的這行:
df <- data.frame(d1 = sample(1:6, 3, replace = TRUE),
d2 = sample(1:6, 3, replace = TRUE))
我們可以透過兩個改進來最佳化這段程式碼:
- 從 data frame 改用 matrix
- 一次產生 6 次擲骰結果
這樣會得到:
m <- matrix(sample(1:6, 6, replace = TRUE), ncol = 2)
本練習屬於課程
撰寫高效 R 程式碼
練習說明
- 先閱讀並理解 data frame 解法
d()。 - 完成 matrix 解法
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 = ___
)