Remplacer le data frame par une matrice
L’un des éléments du code mis en évidence par profvis était la ligne où nous générions les lancers de dés possibles et stockions 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 avec 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)
Cet exercice fait partie du cours
Écrire du code R efficace
Instructions
- 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 cet exemple de code.
# 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 = ___
)