【发布时间】:2016-11-28 12:09:31
【问题描述】:
我有一个长度为 N 的数值向量 x,并想创建一个包含以下所有集合的集合内总和的向量:x 元素的任何可能组合,每个组合中最多有 M 个元素。我整理了一个缓慢的迭代方法;我在这里寻找的是一种不使用任何循环的方法。
考虑我一直采用的方法,在以下示例中,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 替换为 x
有没有办法做到这一点而不会对大 N 造成问题?
【问题讨论】:
-
是
11:15令牌数据(根据@EtienneMoerman 的优化)还是典型的真实数据?这有什么应用?处理 2^45 的基数是很罕见的
标签: r matrix combinations subset-sum