小编STM*_*DFT的帖子

如何增强循环

我在R中的for循环执行缓慢。在这里,我提供了部分代码,这会产生延迟。

## subsitutes for original data
DC <- matrix(rnorm(10), ncol=101, nrow=6400)
C <- matrix(rnorm(20), ncol=101, nrow=6400)


N <- 80
Vcut <- ncol(DC) 
V <- seq(-2.9,2.5,length=Vcut)
fNC <- matrix(NA, nrow=(N*N), ncol=Vcut)
fNDC <- matrix(NA, nrow=(N*N), ncol=Vcut)


Arbfunc <- function(dV){

b <- matrix(NA, nrow=1, ncol=Vcut)

  for(i in 1:(N*N)) {
    for (n in 1:Vcut) {
      for (k in 1:Vcut) {
        b[k] = (V[2]-V[1])*(exp((-1)*abs(V[k])))*exp(abs(V[n]-V[k])/dV)*(C[i,k]/V[k])
      }
      fNC[i,n] = exp(1*abs(V[n]))*(1/(2*dV))*(sum(b[]))
      fNDC[i,n] = DC[i,n]/fNC[i,n]
    }
  }   
}

Arbfunc(0.5)
Run Code Online (Sandbox Code Playgroud)

由于我需要在dV的各个值之间比较结果,因此该代码至少应在几秒钟内运行。但是结果是

user   system  elapsed
40.15   0.03   40.24 …
Run Code Online (Sandbox Code Playgroud)

parallel-processing for-loop r

2
推荐指数
1
解决办法
156
查看次数

标签 统计

for-loop ×1

parallel-processing ×1

r ×1