2014-01-09 17 views
7

昨日私は自分の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  

答えて

6

doParallel、doSNOW、およびdoMPIを使用しているときに取得しているエラーは、キャレット6.0から21のバグが原因で発生します。 R-forgeのバージョン6.0-22で修正されましたが、まだCRANにはリリースされていません。あなたがリリースされる新しいバージョンのを待つしたくない場合は、次のことができます。

  1. ダウングレード5.xの
  2. キャレット6.0から22 doSNOWをインストールして使用
  3. R-鍛造からのインストールキャレット1.0.10 R-鍛造なくdoParallel

から問題が同一のパッケージ内から非エクスポートされた関数を参照する場合でも、:::オペレータの使用を禁止CRANポリシーの変化に起因しました。


更新

キャレット6.0から22は2014年1月18日にCRANにリリースされました。これにより、報告された問題がdoSNOWなどの並列バックエンドでキャレットを使用して解決されるはずです。

+0

ありがとうございました。私はオプション1、ダウングレードを適用しました。 – Ahue

+0

@Ahue固定版がCRAN上にあると答えを更新します。 –

+2

1年以上後、現在のバージョンの 'キャレット 'でこの問題が発生しています... '> packageVersion( "caret") [1]' 6.0.41'' –

関連する問題