![](/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.