r - 使用预处理功能在 R 中进行并行处理不起作用
问题描述
我有一个巨大的代码for loop
,需要几个小时才能运行,最后我的电脑死机了。为了改进我的代码,我使用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
找不到函数(用于估算缺失值)。我的另一个担忧是使用并行计算似乎增加了运行时间。
提前感谢您的宝贵指导。
解决方案
您需要添加功能 .packages
。foreach
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)