2012-12-07 17 views
55

Mam wektor v na 150 wpisów dla każdej wartości od 1 do 10.Jak losowy wektor

V<-rep(1:10, each=150) 

Chciałbym losowo reorganizować kolejność numerów w tym wektorze.

Czy można to zrobić za pomocą prostego polecenia 1-liniowego?

+5

Odpowiedzi tutaj słusznie swoimi kierunku 'kontrole wyrywkowe. Możesz sprawdzić ostrzeżenia [tutaj] (http://stackoverflow.com/a/13732373/1003565) pod kątem pewnych niebezpieczeństw, które idą w parze z użyciem właśnie takiej próbki, jaka jest. – Dason

Odpowiedz

70

Tak.

sample(V) 

Od ?sample:

Dla „próbki” domyślny dla „rozmiar” jest liczba elementów wywnioskować z pierwszego argumentu, tak że „próbki (x)” generuje losowo permutacja elementów "x" (lub "1: x").

+0

Jak mogę potasować [1,1, 2, 2, 2, 2, 3, 3, 4, 5, 5, 5] tak, że otrzymuję 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 utrzymaniem stałej liczby każdego elementu? – Rotail

16

Zastosowanie sample funkcja

V<-rep(1:10, each=150) 

set.seed(001) # just to make it reproducible 
sample(V) 
+1

'replace = FALSE' jest wartością domyślną. –

+0

@BenBolker masz rację –

+0

to sprawia, że ​​150 wartości z oryginału 1500 – user1723765