我发现我的以下代码运行太慢,所以我想知道有人能帮助我消除循环并使我的代码运行得更快。这里a和b是两个从0到4的整数列表,这些元素中的大多数都是0。
sim_cal<-function(a,b){
intScore <- 0
for (i in 1:length(a)){
if (a[i]>0 && b[i]>0){
intScore <- intScore + min(a[i],b[i])
}
}
return(intScore)
}
如果所有值均为非负值,则没有理由测试两个值均大于零,因为最小值的最小值为零且任何正数均为零。因此,对于任何位置a
或b
为零的位置,如果消除测试,则不添加任何总和。
这使以下内容成为等效的,更简单的解决方案:
sim_cal <- function(a,b) {
sum(pmin(a,b))
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句