R - 为增量循环加速 R 版本的 MATLAB

R - speed up R version of MATLAB for incremental loop

有什么方法可以加快以下 MATLAB for 循环的 R 翻译吗?

虽然这个例子很小,但真实的数据集可能有SSC、SSL、dt的50万行。加上这种类似的操作将不得不应用于大约 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 inferno 的第 3 章 "Failing to vectorize"。