Odpowiedzi tutaj słusznie wskazują ci kierunek sample. Możesz sprawdzić ostrzeżenia tutaj, aby dowiedzieć się, jakie niebezpieczeństwa wiążą się z używaniem próbki w takiej postaci, w jakiej jest.
Dason
@Dason: tl; dr jest tak długi, jak długość wektora jest> 1, działa.
smci
1
@smci The tl; Dr jest takie, że jest to niebezpieczne, ponieważ czujesz się z nim komfortowo, a gdy w końcu ma długość 1, gryzie cię.
Dason
@Dason Czytałem to, ale nikt nie jest jeszcze zmodyfikowany, base::sampleaby wymusić użycie seq_along. Poza tym i tak nie widzę, gdzie sample/sample.intzadzwonić base::seq()?
smci
Odpowiedzi:
124
Tak.
sample(V)
Od ?sample:
Dla „próbki” wartością domyślną „size” jest liczba elementów wywnioskowana z pierwszego argumentu, tak że „próbka (x)” generuje losową permutację elementów „x” (lub „1: x”).
Jak mogę tasować [1, 1, 2, 2, 2, 2, 3, 3, 4, 5, 5, 5] tak, że otrzymam coś takiego: [5, 5, 3, 3, 3, 3, 1, 1, 2, 4, 4, 4]? tak, że każdy element może losowo zmienić się na inny, ale z zachowaniem stałej liczby każdego elementu?
Rotail
2
@Rotail: to już robi to, co chcesz; sizeargument sampledomyślnych do size <- length(x). (Wpisz, sampleaby zobaczyć kod, który to robi.)
smci
tak! Dziękuję Ci!
Rotail
24
Użyj samplefunkcji
V<-rep(1:10, each=150)
set.seed(001) # just to make it reproducible
sample(V)
sample
. Możesz sprawdzić ostrzeżenia tutaj, aby dowiedzieć się, jakie niebezpieczeństwa wiążą się z używaniem próbki w takiej postaci, w jakiej jest.base::sample
aby wymusić użycieseq_along
. Poza tym i tak nie widzę, gdziesample/sample.int
zadzwonićbase::seq()
?Odpowiedzi:
Tak.
Od
?sample
:źródło
size
argumentsample
domyślnych dosize <- length(x)
. (Wpisz,sample
aby zobaczyć kod, który to robi.)Użyj
sample
funkcjiV<-rep(1:10, each=150) set.seed(001) # just to make it reproducible sample(V)
źródło
replace=FALSE
jest wartością domyślną.