R中嵌套for循环的并行计算

Parallel Computing for nested for loop in R

因为我正在尝试 运行 R 中的以下代码,执行需要很长时间。因此想检查我是否可以使用并行编程来 运行 这个。我在网上看到人们会先将任务转换为函数。但不太确定我该怎么做。

holder = matrix(0, 1000, 20)

for (x in 1:1000) {
  end = x + 99
  thedata = dataindataframe[x:end,]

  for (y in 1:20) {
    m = garchFit(~garch(1,1), data = thedata[,y], trace = FALSE)
    holder [x,y] = predict(m, 1)[,3]
  }
}

holder

如果你能帮忙编写并行编程的代码,那就太好了。谢谢!

这是一个非常简单的并行化场景。

如果没有 reproducible example,我不能保证这会奏效。但是,这就是我的处理方式,即并行化最外层循环。

library(doParallel)
library(foreach)
library(fGarch)

registerDoParallel(parallel::detectCores()-2) #Or set this to whatever is reasonable for your computer/server 

holder <- foreach(x=1:1000, .combine = "rbind", .packages='fGarch') %dopar% {
  end = x + 99
  thedata = dataindataframe[x:end,]

  pred <- numeric(20L)
  for (y in 1:20) {
    m = garchFit(~garch(1,1), data = thedata[,y], trace = FALSE)
    pred[y] = predict(m, 1)[,3]
  }
  return(pred)
}

一些其他资源: