CommencezCommencez gratuitement

Remplacer le data frame par une matrice

L'un des segments de code mis en évidence par profvis était la ligne où nous générions les lancers de dés possibles et enregistrions les résultats dans un data frame :

df <- data.frame(d1 = sample(1:6, 3, replace = TRUE),
                d2 = sample(1:6, 3, replace = TRUE))

Nous pouvons optimiser ce code grâce à deux améliorations :

  • Passer d'un data frame à une matrice
  • Générer les 6 lancers de dés en une seule étape

Ce qui donne :

m <- matrix(sample(1:6, 6, replace = TRUE), ncol = 2)

Cette activité fait partie du cours

Écrire du code R efficace

Voir le cours

Instructions de l’exercice

  • Lisez et comprenez la solution avec data frame d().
  • Complétez la solution avec matrice, m().
    • m() doit créer une matrix avec 6 éléments et 2 colonnes.
  • Utilisez la fonction microbenchmark() pour comparer les temps d'exécution de d() et m().

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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     = ___
)
Modifier et exécuter le code