![](/img/trans.png)
[英]What are the caveats for calling other packages inside doMC's foreach and dopar?
[英]How to specify the location of R packages in foreach( … , .packages=“pkg”) %dopar%
我的“ pkg”安裝在其他地方,如何告訴foreach在哪里找到軟件包?
foreach(i = 1:2,.packages="pkg") %dopar% { ... }
這給我錯誤信息:
worker initialization failed: there is no package called 'pkg'
謝謝您的幫助。
另一種方法是在調用foreach
之前將.libPaths
發給所有工作程序:
library(foreach)
library(doParallel)
#setup parallel backend to use 8 processors
cl<-makeCluster(8)
registerDoParallel(cl)
# pass libPath to workers, NOTE THIS LINE
clusterCall(cl, function(x) .libPaths(x), .libPaths())
parallelResults <- foreach(i = 1:42, .combine = rbind) %dopar% {
# do your stuff
}
您可以使用.libPaths()
函數在運行的會話中設置庫路徑。
否則,諸如~/.Renviron
類的啟動文件會有所幫助,請參見?Startup
。
最后,如果使用foreach
來運行不同的計算機,則需要注意每台計算機上的庫路徑。
您可以在函數內部指定libPaths
foreach(i = 1:2) %dopar% { .libPaths("your_location_to_pkg") library("pkg") ... }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.