2012-12-07 28 views
55

Ho un vettore V con 150 voci per ogni valore da 1 a 10.Come randomizzare un vettore

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

desidero riorganizzare caso l'ordine dei numeri in questo vettore.

Questo può essere fatto con un semplice comando di 1 riga?

+5

Le risposte qui giustamente puntare il verso 'sample'. Potresti voler controllare gli avvertimenti [qui] (http://stackoverflow.com/a/13732373/1003565) per alcuni pericoli che si accompagnano all'utilizzo del campione così com'è. – Dason

risposta

70

Sì.

sample(V) 

Da ?sample:

Per 'campione' predefinito per 'dimensione' è il numero di elementi desunti dal primo argomento, in modo che 'campione (x)' genera un casuale permutazione degli elementi di 'x' (o '1: x').

+0

Come posso mescolare [1,1, 2, 2, 2, 3, 3, 4, 5, 5, 5] in modo tale da ottenere qualcosa del genere: [5, 5, 3, 3, 3, 3 , 1, 1, 2, 4, 4, 4]? in modo tale che ogni elemento possa cambiare casualmente in un altro ma mantenendo costante il numero di ciascun elemento? – Rotail

16

Usa sample funzione

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

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

'replace = FALSE' è il valore predefinito. –

+0

@BenBolker hai ragione –

+0

questo fa 150 valori dal 1500 – user1723765