Mesures de temps — agrandir un vecteur
Agrandir un vecteur est l'un des péchés capitaux en R; il faut toujours éviter cela.
La fonction growing() définie ci-dessous génère n nombres aléatoires selon une loi normale standard, mais elle augmente la taille du vecteur chaque fois qu'un élément est ajouté!
Remarque : Les nombres suivant une normale standard proviennent d'une distribution normale de moyenne 0 et d'écart type 1.
n <- 30000
# Slow code
growing <- function(n) {
x <- NULL
for(i in 1:n)
x <- c(x, rnorm(1))
x
}
Cette activité fait partie du cours
Écrire du code R efficace
Instructions de l’exercice
La fonction growing() a déjà été définie dans votre espace de travail.
- À l'aide de la fonction
system.time(), calculez le temps nécessaire pour générern = 30000nombres aléatoires suivant une normale standard 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 ce code d’exemple.
# Use <- with system.time() to store the result as res_grow
system.time(___ <- ___)