R中的并行处理与预处理功能不起作用

问题描述 投票:1回答:1

我有一个巨大的代码与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函数(用于估算缺失值)。我的另一个担忧是,似乎使用并行计算增加了运行时间。

提前感谢您的宝贵指导。

r parallel-processing
1个回答
1
投票

你需要在.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)
© www.soinside.com 2019 - 2024. All rights reserved.