我的“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
}