我的「pkg」安裝在別的地方,我怎麼能告訴foreach在哪裏可以找到包?如何在foreach中指定R包的位置(...,.packages =「pkg」)%dopar%
foreach(i = 1:2,.packages="pkg") %dopar% { ... }
這給我的錯誤信息:
worker initialization failed: there is no package called 'pkg'
謝謝您的幫助。
我的「pkg」安裝在別的地方,我怎麼能告訴foreach在哪裏可以找到包?如何在foreach中指定R包的位置(...,.packages =「pkg」)%dopar%
foreach(i = 1:2,.packages="pkg") %dopar% { ... }
這給我的錯誤信息:
worker initialization failed: there is no package called 'pkg'
謝謝您的幫助。
您可以使用.libPaths()
函數在運行會話中設置庫路徑。
否則啓動文件如~/.Renviron
可以提供幫助,請參閱?Startup
。
最後,如果您使用foreach
運行不同的機器,您需要照顧每臺機器上的庫路徑。
另一種方法是你打電話之前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
}