繁体   English   中英

如何在foreach(…,.packages =“ pkg”)%dopar%中指定R包的位置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM