【发布时间】:2020-02-16 09:06:29
【问题描述】:
我需要创建一个包含所有可能组合的矩阵。
L<-12
vec <- c(0:21)
lst <- lapply(numeric(L), function(x) vec)
Mat1<-as.matrix(expand.grid(lst))
结果将是非常大的矩阵,我的计算机无法计算它。 实际上,我只需要第一列中的值大于第二列中的值,第二列中的值大于第三列中的值的组合,依此类推。我可以以某种方式修改 expand.grid 函数以删除不必要的组合吗?
【问题讨论】:
-
向量 0:21 真的是您感兴趣的数字,还是只是为了给我们一些工作而创建的样本向量?如果是,那么下面基于组合的答案将起作用,否则它们不会...
-
@Spacedman IINM 更强大的版本将处理 (1) 重复和 (2) 缺失值。我认为 OP 的主要问题是创建一个巨大的 22^12 大小(380 petabit)输出(不可能)并根据他的需要进行子集化——下面的两个答案都解决了这个问题,并且 IINM 可以通过一些进一步的子集来修复以适应这些概括
-
如果组成向量甚至没有排序怎么办?这就是为什么我想在这种情况下发布答案之前要求澄清!我想 OP 确实说“组合”,这可能意味着 combn(0:21,11) (或类似的)......
标签: r