[英]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.