R:计算总和小于给定值的三元组

时间:2019-02-16 01:13:55

标签: r triplet

我已经能够在其他语言上找到针对此问题的多种解决方案,但似乎在R中无法正确解决。这是我到目前为止的内容:

给定一个数组(-2、0、1、3),发现三元组的数量少于给定的sum变量。

sum = 2
ar<-c(-2, 0, 1, 3);ar

sumtrip<- function (vec,n,sum) {
  ctr=0
  for (i in 1:n-2){
    for (j in i+1:n-1){
      for (k in j+1:n){
        if ((vec[i]+vec[j]+vec[k]) < sum){
          ctr=ctr+1
        }
      }
    }
  }
return(ctr)
}

sumtrip(ar,length(ar),sum)

这导致: vec [i] + vec [j]中的错误:二进制运算符的非数字参数

2 个答案:

答案 0 :(得分:0)

您的标点符号不好。这应该做您想要的。请把你的括号和我的括号进行比较。

sum = 2
ar<-c(-2, 0, 1, 3);ar

sumtrip<- function (vec,n,sum) {
  ctr=0
  for (i in 1:(n-2)){
    for (j in (i+1):(n-1)){
      for (k in (j+1):n){
        if ((vec[i]+vec[j]+vec[k]) < sum){
          ctr=ctr+1
        }
      }
    }
  }
return(ctr)
}

sumtrip(ar,length(ar),sum)

答案 1 :(得分:0)

您可以使用combn

sum(combn(c(-2, 0, 1, 3), 3, function(x) sum(x)<2))
# [1] 2