82 votes

Sélectionnez un élément aléatoire dans une liste de R?

a<-c(1,2,0,7,5)

Certaines langues ont une fonction de sélection -- choisissez un nombre aléatoire parmi a -- comment dans R ?

102voto

Dason Points 18263
# Sample from the vector 'a' 1 element.
sample(a, 1)

33voto

moldovean Points 517

les réponses ci-dessus sont techniquement correctes :

 sample(a,1)

Cependant, si vous souhaitez répéter ce processus plusieurs fois, disons que vous souhaitez imiter le lancer de dés, vous devez alors ajouter :

 a<-c(1,2,3,4,5,6)
sample(a, 12, replace=TRUE)

J'espère que ça aide.

20voto

pomber Points 1046

Soyez prudent lorsque vous utilisez un échantillon !

sample(a, 1) fonctionne très bien pour le vecteur dans votre exemple, mais lorsque le vecteur a une longueur de 1, cela peut entraîner un comportement indésirable, il utilisera le vecteur 1:a pour l'échantillonnage.

Donc, si vous essayez de choisir un élément au hasard dans un vecteur de longueur variable, vérifiez le cas de la longueur 1 !

 sampleWithoutSurprises <- function(x) {
  if (length(x) <= 1) {
    return(x)
  } else {
    return(sample(x,1))
  }
}

5voto

skan Points 690

Cette méthode ne produit pas d'erreur lorsque votre vecteur est de longueur un, et c'est simple.

 a[sample(1:length(a),1)]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X