我有一个长度为N的数值向量x,并且想要创建以下所有集合的集合内和的向量:任何可能的x元素与最多M每个组合中的元素。我把一个缓慢的迭代方法放在一起;我在这里寻找的是一种不使用任何循环的方式。R具有行限制的expand.grid
考虑我已经采用的方法,在下面的例子中有N = 5和M = 4
M <- 4
x <- 11:15
y <- as.matrix(expand.grid(rep(list(0:1), length(x))))
result <- y[rowSums(y) <= M, ] %*% x
然而,当N变大时(上面的22对我来说),则expand.grid输出变为太大,并给出错误(用x < - 11:55代替x来观察这个)。理想情况下,会有一个expand.grid函数,它允许在构造完整矩阵之前对行进行限制,这至少可以保证矩阵大小在内存限制内。
有没有办法实现这一点,而不会导致大N的问题?
“11:15”令牌数据(per @ EtienneMoerman的优化)还是典型的真实数据?这有什么用?这是很难处理的2^45 – smci