2012-02-23 18 views
21

które chciałbym stworzyć data.frame wszystkich możliwych permutacji 10 zmiennych, które mogą być albo 1 albo 2Generowanie wszystkich możliwych permutacji (lub n-krotki)

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 
... 

Czy istnieje „szybki” sposób to zrobić w R?

+2

Istnieje 'permutations' funkcja w gregmisc wierzę. Możesz przekonwertować wynikową macierz na data.frame. –

+1

Alternatywnie 'combn' w' base', w połączeniu z 'unique (x, MARGIN = 2)'. – jbaums

+1

Nie permutacja. [Permutacje] (https://en.wikipedia.org/wiki/Permutation) są rearanżacjami obiektów. Nie można przestawić "1,1,1,1,1,1,1,1,1,1,1" na "1,2,1,1,1,1,1,1,1,1", ponieważ pierwsze ciąg nie ma żadnego '2'. – liori

Odpowiedz

28

jak o tym:

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

czy to (dzięki Tyler):

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

'nrow (unikalny (tmp))' = 1024. Dzięki za to. –

+17

Aby wpisać mniej kodu, możesz użyć: 'x <- list (1: 2);' 'tmp = expand.grid (rep (x, 10))' –

+0

Dobrze wiedzieć; dzięki. –

Powiązane problemy