-1

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

  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]

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

只园

4

1 回答 1

1

尝试这个:

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)
于 2016-07-12T15:47:26.663 回答