開始使用免費開始

把 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     = ___
)
編輯並執行程式碼