如何在R中避免循环?

Mar*_*tin 6 loops for-loop r

在我的R程序中,我有一个以下形式的"for"循环:

for(i in 1:I)  
{  
res[i] <- a[i:I] %*% b[i:I]   
}
Run Code Online (Sandbox Code Playgroud)

其中res,ab是长度的矢量I.

有没有直接的方法来避免这个循环并直接计算res?如果是这样,那会更有效吗?

提前致谢!

ili*_*lir 9

这是"反向的cumsum" a*b

rev(cumsum(rev(a) * rev(b)))
Run Code Online (Sandbox Code Playgroud)

  • 甚至在Justin中用'*`替换`%*%`,中位数时间是360和87700微秒,所以没有惊人的"cumsum"更快. (2认同)