web-dev-qa-db-ja.com

「R」のforeachループで複数の関数またはパッケージをエクスポートする方法

RでdoParallelパッケージを使用して、コードの実行時間を短縮しようとしています。

この関数の本体でいくつかの追加パッケージが使用される関数awareRateSIRを呼び出しています。次のようなエラーが発生します

関数「vcount」が見つかりませんでした。

vcountigraphで使用されるパッケージawareRateSIRの関数ですが、それだけではありません。どうすればこの問題を解決できますか?関数awareRateSIRで使用されているすべてのパッケージ名を渡す必要があると思いましたが、foreachで複数の関数をエクスポートできない方法、または複数のパッケージ名をエクスポートする方法がわかりません。

これは私のコードです:

tp<-foreach(i=1:iter,  .inorder = FALSE, .export = "awareRateSIR",
          .packages = "igraph", .packages="doParallel")%dopar%{
tp <- awareRateSIR(graphContact, graphCom,state)
return(tp)
}

これらのパッケージを渡さないと、エラー状態が発生します。すべてのパッケージを渡した場合、一部の関数が不明であるとエラーが発生します。

Foreach(i = 1:iter、.inorder = FALSE、.export = "awareRateSIR" 、:複数の実際の引数と一致する正式な引数 ".packages"のエラー "

前もって感謝します

7
user3289235

以下のように、c関数を使用して、必要なすべてのパッケージを渡す必要があります。

tp<-foreach(i=1:iter,  .inorder = FALSE, .export = "awareRateSIR",
          .packages = c("igraph", "doParallel"))%dopar%{
tp <- awareRateSIR(graphContact, graphCom,state)
return(tp)
}
13
Kumar Manglam

通常、foreachを使用する場合、変数、関数、またはパッケージをエクスポートする必要はありません。

変数と関数の場合、それらはforeachステートメントと同じ環境にある必要があります(必要なものだけを渡す関数を作成することをお勧めします)。

他のパッケージの関数が必要な場合は、パッケージ内のようにpackage::functionを使用するだけです。

1
F. Privé