簡體   English   中英

R:計算總和小於給定值的三元組

[英]R: Count triplets with sum smaller than a given value

我已經能夠在其他語言上找到此問題的多種解決方案,但似乎在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]中的錯誤:二進制運算符的非數字參數

您的標點符號不好。 這應該做您想要的。 請把你的括號和我的括號進行比較。

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)

您可以使用combn

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM