大富翁回顾

高效 R 代码写作

Colin Gillespie

Jumping Rivers & Newcastle University

数据框 vs 矩阵

# 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 秒
  • 创建数据框比矩阵更慢
  • 在大富翁模拟中,我们创建了 10,000 个数据框
高效 R 代码写作

apply vs rowSums

# Original
total <- apply(df, 1, sum)
# Updated
total <- rowSums(df)
  • 0.5 秒降至 0.16 秒——提速 3 倍
高效 R 代码写作

& vs &&

# 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 代码写作

总览

Method Time (secs) Speed-up
原始 2.00 1.0
矩阵 0.50 4.0
矩阵 + rowSums 0.20 10.0
矩阵 + rowSums + && 0.19 10.5
高效 R 代码写作

¡Vamos a practicar!

高效 R 代码写作

Preparing Video For Download...