RでdoParallel
パッケージを使用して、コードの実行時間を短縮しようとしています。
この関数の本体でいくつかの追加パッケージが使用される関数awareRateSIR
を呼び出しています。次のようなエラーが発生します
関数「vcount」が見つかりませんでした。
vcount
はigraph
で使用されるパッケージ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"のエラー "
前もって感謝します
以下のように、c
関数を使用して、必要なすべてのパッケージを渡す必要があります。
tp<-foreach(i=1:iter, .inorder = FALSE, .export = "awareRateSIR",
.packages = c("igraph", "doParallel"))%dopar%{
tp <- awareRateSIR(graphContact, graphCom,state)
return(tp)
}
通常、foreachを使用する場合、変数、関数、またはパッケージをエクスポートする必要はありません。
変数と関数の場合、それらはforeach
ステートメントと同じ環境にある必要があります(必要なものだけを渡す関数を作成することをお勧めします)。
他のパッケージの関数が必要な場合は、パッケージ内のようにpackage::function
を使用するだけです。