昨天我更新了我的R包,从那以后并列执行列车功能失败了.
似乎从工作者中调用的某些函数不可用.这些函数至少是flatTable和probFunction.
我在生产机器上遇到了这个问题,并且能够在干净的Windows 7 x64 VM上重现它.
我在下面添加了一个最小的工作示例 亲爱的stackoverflow用户:非常感谢!
# R 3.0.2 x64, RStudio Version 0.98.490, Windows 7 x64 data(iris) library(caret) # 6.0-21 library(doParallel) # 1.0.6 model <- "rf" # Fail ?probFunction ?flatTable fitControl <- trainControl( method = "repeatedcv" , number = 5 ## 5-fold CV , repeats = 1 ## repeated one times , verboseIter =TRUE ) #### Sequential Version #### # Runs train(Species ~ ., data = iris, method = model, trControl = fitControl) #### Parallelized version #### # Fails with # Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : # worker initialization failed: Error in eval(expr, envir, enclos): could not find function "flatTable" cl <- makeCluster(3) registerDoParallel(cl) train(Species ~ ., data = iris, method = model, trControl = fitControl) stopCluster(cl) # Fails with # Error in { : task 1 failed - "could not find function "probFunction"" fitControl <- trainControl( method = "repeatedcv" , number = 5 ## 5-fold CV , repeats = 1 ## repeated one times , verboseIter =TRUE , classProbs = TRUE ) cl <- makeCluster(3) registerDoParallel(cl) train(Species ~ ., data = iris, method = model, trControl = fitControl) stopCluster(cl) #### Again sequential version #### # Fails with # Error in summary.connection(connection) : invalid connection train(Species ~ ., data = iris, method = model, trControl = fitControl)
R会话信息
R version 3.0.2 (2013-09-25) Platform: x86_64-w64-mingw32/x64 (64-bit) locale: [1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252 [4] LC_NUMERIC=C LC_TIME=German_Germany.1252 attached base packages: [1] parallel stats graphics grDevices utils datasets methods base other attached packages: [1] e1071_1.6-1 class_7.3-9 randomForest_4.6-7 doParallel_1.0.6 iterators_1.0.6 [6] foreach_1.4.1 caret_6.0-21 ggplot2_0.9.3.1 lattice_0.20-23 loaded via a namespace (and not attached): [1] car_2.0-19 codetools_0.2-8 colorspace_1.2-4 compiler_3.0.2 dichromat_2.0-0 [6] digest_0.6.4 grid_3.0.2 gtable_0.1.2 labeling_0.2 MASS_7.3-29 [11] munsell_0.4.2 nnet_7.3-7 plyr_1.8 proto_0.3-10 RColorBrewer_1.0-5 [16] reshape2_1.2.2 scales_0.2.3 stringr_0.6.2 tools_3.0.2
Steve Weston.. 7
您使用doParallel,doSNOW和doMPI时出现的错误是由插入符号6.0-21中的错误引起的.它已在R-forge的6.0-22版中修复,但尚未发布到CRAN.如果您不想等待新版本发布,您可以:
降级为插入5.x
从R-forge安装插入符号6.0-22
从R-forge而不是doParallel安装和使用doSNOW 1.0.10
问题是由于CRAN策略的更改导致禁止使用:::
运算符,即使在同一个包中引用非导出函数时也是如此.
更新
Caret 6.0-22于2014-01-18发布于CRAN.这应该使用带有doSNOW和类似并行后端的插入符来解决报告的问题.
您使用doParallel,doSNOW和doMPI时出现的错误是由插入符号6.0-21中的错误引起的.它已在R-forge的6.0-22版中修复,但尚未发布到CRAN.如果您不想等待新版本发布,您可以:
降级为插入5.x
从R-forge安装插入符号6.0-22
从R-forge而不是doParallel安装和使用doSNOW 1.0.10
问题是由于CRAN策略的更改导致禁止使用:::
运算符,即使在同一个包中引用非导出函数时也是如此.
更新
Caret 6.0-22于2014-01-18发布于CRAN.这应该使用带有doSNOW和类似并行后端的插入符来解决报告的问题.