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
Instructions de l’exercice
- Lisez et comprenez la solution avec data frame
d(). - Complétez la solution avec matrice,
m().m()doit créer unematrixavec 6 éléments et 2 colonnes.
- Utilisez la fonction
microbenchmark()pour comparer les temps d'exécution ded()etm().
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 = ___
)