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

R-加速增量循环的MATLAB的R版本,r,matlab,for-loop,R,Matlab,For Loop,有没有什么方法可以加速下面的MATLAB for循环的R转换 尽管这个示例很小,但对于SSC、SSL和dt,实际数据集可能最多有500000行。此外,这种类似的操作必须应用于大约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-

有没有什么方法可以加速下面的MATLAB for循环的R转换

尽管这个示例很小,但对于SSC、SSL和dt,实际数据集可能最多有500000行。此外,这种类似的操作必须应用于大约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)])

N除非TSSL是一个列表,否则您不会使用“[[”。您真的应该预先分配TSSL,不管它的结构是什么。@Bonded一定要感谢您建议不要使用“[[”,除了列表,并预先分配生成的R对象。TSSL是一个向量,将在以后的步骤中求和。感谢您的阅读建议。