expand.grid 在 R 中的迭代使用

Iterative usage of expand.grid in R

我想知道是否有任何方法可以使用 expand.grid() 函数(或任何其他函数)为指定数量的序列生成所有可能的组合。后者由用户提供。

想要的结果。 例如,

expand.grid(0:1, 0:1)
  Var1 Var2
1    0    0
2    1    0
3    0    1
4    1    1

expand.grid(0:1, 0:1, 0:1)
  Var1 Var2 Var3
1    0    0    0
2    1    0    0
3    0    1    0
4    1    1    0
5    0    0    1
6    1    0    1
7    0    1    1
8    1    1    1

expand.grid(0:1, 0:1, 0:1, ...)
  Var1 Var2 Var3 ...
1    0    0    0 ...
2    1    0    0 ...
3    0    1    0 ...
4    1    1    0 ...
5    0    0    1 ...
6    1    0    1 ...
7    0    1    1 ...
8    1    1    1 ...
.    .    .    .
.    .    .    .
.    .    .    .

注意:实现不限于 0-1 序列,因此它也应该适用于 expand.grid(0:1, 0:5, 2:4, 3:5)

我的实现。我正在尝试这样的事情:

expand.grid(rep(0:1, 3))

但 R 将其解释为单个序列:

  Var1
1    0
2    1
3    0
4    1
5    0

任何帮助将不胜感激!

我们可以 rep list 然后 expand.grid

expand.grid(rep(list(0:1),3))
#  Var1 Var2 Var3
#1    0    0    0
#2    1    0    0
#3    0    1    0
#4    1    1    0
#5    0    0    1
#6    1    0    1
#7    0    1    1
#8    1    1    1

或者另一种选择是使用 replicatesimplify=FALSE 到 return 一个 list 输出,然后使用 expand.grid

expand.grid(replicate(3, 0:1, simplify=FALSE))