モノポリーのまとめ

効率的な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コードの書き方

概要

手法 時間(秒) 高速化
Original 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...