【问题标题】:Iterative usage of expand.grid in R在 R 中迭代使用 expand.grid
【发布时间】:2015-09-09 12:08:50
【问题描述】:

我想知道是否有任何方法可以使用 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

任何帮助将不胜感激!

【问题讨论】:

    标签: r iteration combinations


    【解决方案1】:

    我们可以replist 然后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 返回list 输出,然后使用expand.grid

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

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2015-07-17
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多