Récapitulatif Monopoly

Écrire du code R efficace

Colin Gillespie

Jumping Rivers & Newcastle University

Data frames vs matrices

# 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)
  • Temps total de simulation Monopoly : de 2 s à 0,5 s
  • Créer un data frame est plus lent qu'une matrice
  • Dans la simulation Monopoly, nous avons créé 10 000 data frames
Écrire du code R efficace

apply vs rowSums

# Original
total <- apply(df, 1, sum)
# Updated
total <- rowSums(df)
  • De 0,5 s à 0,16 s – accélération ×3
Écrire du code R efficace

& vs &&

# Original
is_double[1] & is_double[2] & is_double[3]
# Updated
is_double[1] && is_double[2] && is_double[3]
  • Gain limité
  • De 0,16 s à 0,15 s
Écrire du code R efficace

Aperçu

Méthode Temps (s) Accélération
Original 2,00 1,0
Matrice 0,50 4,0
Matrice + rowSums 0,20 10,0
Matrice + rowSums + && 0,19 10,5
Écrire du code R efficace

Passons à la pratique !

Écrire du code R efficace

Preparing Video For Download...