R : rep vs replicate
Nouveau venu en R, je découvre régulièrement des nouvelles fonctions qui me
simplifient la vie. Comme par exemple la fonction replicate
dont je vais
parler aujourd’hui.
Partons de l’hypothèse que je veuille générer plusieurs nombres aléatoires de
1 à 10. Pour ceci je dispose de la fonction random
suivante, qui produit
justement un nombre aléatoire entre 1 et 10 :
Comment faire pour obtenir n nombres aléatoires en utilisant cette fonction ?
Mettons quatre nombres. Si je me sers de rep
, je vais avoir quelques
surprises :
En effet, l’appel à random()
est fait avant la répétition, j’obtiens donc
quatre fois la même valeur.
Pour résoudre ce problème, je peux utiliser la fonction replicate
:
Ça fonctionne car cette fois random()
est appelé pour chacune des
répétitions.
Pour la petite histoire, replicate
est un cas spécial de la fonction plus
générale sapply
:
Dans ce cas d’utilisation précis replicate
est plus confortable à utiliser,
puisque cette méthode évite de générer un vecteur inutile (1:4
) et de passer par une fonction anonyme qui n’utilise pas son argument.