在 R 中创建总计为特定数字的所有向量组合

Create all vector combinations summing up to a specific number in R

我正在尝试创建一个矩阵,其中包含相同向量的两个组合,总和为 2300。我在 R 中使用 combn 函数,请参见下面的代码:

  vector <- 400:1900
  combinations <- combn(vector, 2, function(x) subset(x, sum(x)==2300))

很遗憾,此代码无效。我收到以下错误:

Error in combn(r2, 2, function(x) subset(x, sum(x) == 2300)) : 
  dims [product 1125750] do not match the length of object [0]

有谁知道我做错了什么? 非常感谢,

只园

试试这个:

combinations <- combn(vector,2,function(x) ifelse(sum(x[1], x[2])==2300, 
list(c(x[1],x[2])), list(c(0,0))))

res <- combinations[lapply(combinations, sum)>0]

head(res)

# [[1]]
# [1]  400 1900

# [[2]]
# [1]  401 1899

# [[3]]
# [1]  402 1898

# [[4]]
# [1]  403 1897

# [[5]]
# [1]  404 1896

# [[6]]
# [1]  405 1895

如果你想得到一个矩阵:

matrix(unlist(res), ncol = 2, byrow = TRUE)