创建包含许多项目的所有项目组合

时间:2016-10-27 10:16:05

标签: r vector combn

我想拥有各种项目的可能组合。想象参与者将三个项目之一带入一个事件,我想知道不同的组合(参与者的顺序无关紧要)。例如,

items <- rep(list(1:3), 5)
combinations <- expand.grid(items)
head(combinations)
  Var1 Var2 Var3 Var4 Var5
1    1    1    1    1    1
2    2    1    1    1    1
3    3    1    1    1    1
4    1    2    1    1    1
5    2    2    1    1    1
6    3    2    1    1    1

为5位参与者提供了所需的组合数据框架。

现在,想象一下我有50个参与者。然后:

items <- rep(list(1:3), 50)
combinations <- expand.grid(items)
Error in rep.int(rep.int(seq_len(nx), rep.int(rep.fac, nx)), orep) : 
  invalid 'times' value
In addition: Warning message:
In rep.int(rep.int(seq_len(nx), rep.int(rep.fac, nx)), orep) :
  NAs introduced by coercion to integer range

问题被描述为here并且由于R中向量的大小限制而出现。因此,似乎expand.grid是不可能的。

有没有其他方法可以在R中获得所需的输出?据我所知,自版本3.0以来R支持长向量,所以我有点惊讶地发现它们尚未实现。任何指向替代品的指针都非常感谢!

1 个答案:

答案 0 :(得分:1)

有50个参与者,您创建一个3 ^ 50 = 7.17898e + 23行的数据帧。这是不可能保存在你的记忆中。所以我认为这是一个扩展问题。