Chronométrage – agrandir un vecteur
Agrandir progressivement un vecteur est un des péchés capitaux en R ; vous devriez toujours l’éviter.
La fonction growing() définie ci-dessous génère n nombres aléatoires selon une loi normale centrée réduite, mais augmente la taille du vecteur à chaque ajout d’élément !
Remarque : Les nombres selon une loi normale centrée réduite sont tirés d’une distribution normale de moyenne 0 et d’écart type 1.
n <- 30000
# Code lent
growing <- function(n) {
x <- NULL
for(i in 1:n)
x <- c(x, rnorm(1))
x
}
Cet exercice fait partie du cours
Écrire du code R efficace
Instructions
La fonction growing() a déjà été définie dans votre espace de travail.
- À l’aide de la fonction
system.time(), mesurez le temps nécessaire pour générern = 30000nombres aléatoires selon une loi normale centrée réduite avec la fonctiongrowing(). Utilisez l’astuce avec<-pour stocker le résultat dans un vecteur appeléres_grow.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Use <- with system.time() to store the result as res_grow
system.time(___ <- ___)