J'ai un vecteur x = (1,2,3,4, ... 20) et je veux générer des vecteurs avec 5 éléments de ce vecteur (les éléments peuvent être répétés), jusqu'à ce que tous les éléments du premier vecteur soient affichés au moins une fois. Et puis je dois représenter les données avec un histogramme. Une idée comment puis-je faire cela? Merci d'avance

0
Nasi Jofce 3 janv. 2016 à 19:37

2 réponses

Meilleure réponse

Vous pouvez obtenir un échantillon de cinq éléments faisant cela avec remplacement (vous pouvez le définir sur false si vous ne voulez pas d'échantillonnage de remplacement):

x <- seq(1:20)
shown <- rep(0, 20)
while (!all(shown > 0)) {
  s <- sample(x, 5, replace = TRUE)
  shown[s] <- shown[s] + 1
}
hist(shown)
0
Gopala 3 janv. 2016 à 17:02

Une boucle while semble être un bon moyen d'aller ici. Cette solution utilise une matrice pour capturer vos échantillons. Chaque échantillon est une ligne. Cela facilite l'exécution d'autres opérations par échantillon, si vous le souhaitez.

set.seed(123)  

base_v <- 1:20

#empty matrix to put samples in
mydat <- matrix(nrow=0,ncol=5)

while(!all(base_v %in% mydat)){
  mydat <- rbind(mydat, sample(base_v,size=5,replace=T))
}

#then making the histogram is trivial
hist(mydat)
3
Heroka 3 janv. 2016 à 17:00