2012-02-23 13 views
21

Me gustaría crear un hoja.de.datos de todas las posibles permutaciones de 10 variables que pueden ser 1 ó 2generar todas las permutaciones posibles (o n-tuplas)

2*2*2*2*2*2*2*2*2*2 = 1024 # possible 

1,1,1,1,1,1,1,1,1,1 
1,2,1,1,1,1,1,1,1,1 
1,2,2,1,1,1,1,1,1,1 
1,2,2,2,1,1,1,1,1,1 
... 

¿Existe una "rápida" manera de hacer esto en R?

+2

Hay una función 'permutations' en gregmisc creo. Puede forzar la matriz resultante a un data.frame. –

+1

Alternativamente 'combn' en' base', combinado con 'unique (x, MARGIN = 2)'. – jbaums

+1

No es una permutación. [Permutaciones] (https://en.wikipedia.org/wiki/Permutation) son reordenamientos de objetos. No puede reorganizar '1,1,1,1,1,1,1,1,1,1' en' 1,2,1,1,1,1,1,1,1,1', porque el primero cadena no tiene ningún '2'. – liori

Respuesta

28

¿qué tal esto:

tmp = expand.grid(1:2,1:2,1:2,1:2,1:2,1:2,1:2,1:2,1:2,1:2) 

o este (gracias Tyler):

x <- list(1:2) 
tmp = expand.grid(rep(x, 10)) 
+1

'nrow (unique (tmp))' = 1024. Gracias por eso. –

+17

Para escribir menos código, puede usar: 'x <- list (1: 2);' 'tmp = expand.grid (rep (x, 10))' –

+0

Es bueno saberlo; Gracias. –

Cuestiones relacionadas