c++ - Q" R with indicator" 与"c++ with for" 之间的速度

  显示原文与译文双语对照的内容
0 0

我觉得以下 R 代码的速度很好。 是否可以使用 C++ 提高速度? 我觉得我的C++ 代码不是那么快。

#R-code
> s<-5
> t<-2
> y<-c(1,2,3,4,5)
> r<-c(1,5,5,3,3)
> 
> sindex<-r[r==s]
> tindex<-r[r==t]
> 
> 
> res<-sum(y[sindex])+sum(y[tindex])
> 
> sindex
[1] 5 5
> tindex
numeric(0)
> 
> res
[1] 10
#c++
res1=0; res2=0;
for(i=0;i<n;i++){
if(r[i]==s){
 res1=res1+y[s];
}
if(r[i]==t){
 res2=res2+y[t];
}
}
res=res1+res2
时间:原作者:3个回答

0 0

R ( sum是矢量函数) 中的矢量化在后台运行。 通常速度足够快。

原作者:
0 0

你可以尝试:

res = 0;
for (i = 0; i <n; i++)
 if (r[i] == s || r[i] == t)
 res += y[i];//y[s] or y[t] seems incorrect

不要指望它会更快。

原作者:
...