大富翁重點回顧

撰寫高效 R 程式碼

Colin Gillespie

Jumping Rivers & Newcastle University

Data frame 與 matrix

# Original
rolls <- data.frame(d1 = sample(1:6, 3, replace = TRUE),
                    d2 = sample(1:6, 3, replace = TRUE))
# Updated
rolls <- matrix(sample(1:6, 6, replace = TRUE), ncol = 2)
  • 大富翁模擬總時間:2 秒 → 0.5 秒
  • 建立 data frame 比 matrix 慢
  • 在大富翁模擬中,我們建立了 10,000 個 data frame
撰寫高效 R 程式碼

apply 與 rowSums

# Original
total <- apply(df, 1, sum)
# Updated
total <- rowSums(df)
  • 0.5 秒 → 0.16 秒 —— 提升 3 倍
撰寫高效 R 程式碼

& 與 &&

# Original
is_double[1] & is_double[2] & is_double[3]
# Updated
is_double[1] && is_double[2] && is_double[3]
  • 加速有限
  • 0.16 秒 → 0.15 秒
撰寫高效 R 程式碼

總覽

方法 時間(秒) 加速倍數
原始 2.00 1.0
Matrix 0.50 4.0
Matrix + rowSums 0.20 10.0
Matrix + rowSums + && 0.19 10.5
撰寫高效 R 程式碼

一起來練習吧!

撰寫高效 R 程式碼

Preparing Video For Download...