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)
}
一些其他资源:
因为我正在尝试 运行 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)
}
一些其他资源: