生成所有可能的排列(或n元组)

Bra*_*sen 23 r

我想创建一个包含10个变量的所有可能排列的data.frame,可以是1或2

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
...
Run Code Online (Sandbox Code Playgroud)

在R中有"快速"的方法吗?

bah*_*kev 29

这个怎么样:

tmp = expand.grid(1:2,1:2,1:2,1:2,1:2,1:2,1:2,1:2,1:2,1:2)
Run Code Online (Sandbox Code Playgroud)

或者这个(感谢泰勒):

x <- list(1:2)
tmp = expand.grid(rep(x, 10))
Run Code Online (Sandbox Code Playgroud)

  • 要输入更少的代码,你可以使用:`x < - list(1:2);``tmp = expand.grid(rep(x,10))` (17认同)
  • @aguiar什么是452 ^ 4? - 这将是组合的数量.这几乎是32位R上矢量长度限制的10倍,所以你需要64位R和大约1 TB的Ram! (4认同)