1

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

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

这里描述了这个问题,并且由于 R 中向量大小的限制而出现。所以,这似乎expand.grid是没有问题的。

有没有其他方法可以得到我想要的输出R?据我所知,R从 3.0 版本开始就支持长向量,所以看到它们还没有实现我有点惊讶。任何指向替代方案的指针都非常感谢!

4

1 回答 1

1

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

于 2016-10-27T10:39:10.903 回答