R - 加速 MATLAB 的 R 版本以进行增量循环



有没有办法加快下面 MATLAB for 循环的以下 R 转换?

尽管此示例很小,但实际数据集可能有多达 500,000 行 SSC、SSL 和 dt。此外,这种类似的操作必须应用于大约 20 个数据集。

SSC <- abs(rnorm(1000))
SSL <- abs(rnorm(1000))
dt <- rep(15, 1000)
for (i in 2:length(SSC))
{
TSSL[[i-1]] <- (SSL[i] + SSL[i-1])/(2*60*dt[i-1])
}

# MATLAB code
# for i=2:length(SSC)
# TSSL(i-1)=(SSL(i) + SSL(i-1))/2*60*dt(i-1);
# end

谢谢。

什么是

TSSL?您应该初始化它。

此外,您在这里不需要循环,您应该使用向量运算:

N    <- 1000
SSC  <- abs(rnorm(N))
SSL  <- abs(rnorm(N))
dt   <- rep(15, N)
TSSL <- rep(NA,N)
TSSL[1:(N-1)] = (SSL[2:N]+SSL[1:(N-1)])/(2*60*dt[1:(N-1)])

我强烈建议阅读R地狱的第3章"未能矢量化"。

最新更新