我在其中有一个带有for loop
的巨大代码,它需要几个小时才能运行,最后我的PC冻结了。为了改善代码,我使用了foreach
以及并行处理来减少运行时间。我的代码是这样:
library(doParallel)
cores=detectCores()
cl <- makeCluster(cores[1]-1)
registerDoParallel(cl)
foreach (i=1:3)%dopar%{
{some R code with i index}
preProc <- preProcess(method="bagImpute", train[, 1:lengthvar])
train[, 1:lengthvar] <- predict(preProc, train[, 1:lengthvar])
test[, 1:lengthvar] <- predict(preProc, test[, 1:lengthvar])
}
stopCluster(cl)
我遇到的错误是找不到preProc
函数(对于缺少值的插补)。我的另一个问题是,似乎使用并行计算增加了运行时间。
事先感谢您的宝贵指导。
您需要在foreach
函数中添加.packages
。
library(doParallel)
cores=detectCores()
cl <- makeCluster(cores[1]-1)
registerDoParallel(cl)
foreach (i=1:3,.packages("caret"))%dopar%{
{some R code with i index}
preProc <- preProcess(method="bagImpute", train[, 1:lengthvar])
train[, 1:lengthvar] <- predict(preProc, train[, 1:lengthvar])
test[, 1:lengthvar] <- predict(preProc, test[, 1:lengthvar])
}
stopCluster(cl)