1

我正在将软件包安装到特定目录,然后使用以下命令加载到库中:

library(CustomPackage, lib.loc = "R_Libs")

然后,在使用 foreach 时,我无法弄清楚如何从该自定义位置“R_Libs”加载这个包。

foreach(i=(1:100), .packages=c("lubridate","CustomPackage")) %dopar% {
some code here...
}

任何想法如何强制从“R_Libs”目录中读取一个包?

4

2 回答 2

2

在 R 控制台中修改库路径是没有意义的。

> library(doParallel)
> library(foreach)
> cl = makeCluster(detectCores() - 1)
> registerDoParallel(cl)
> getDoParWorkers()
[1] 3
> .libPaths()
[1] "D:/Program Files/R/R-3.2.3/library"
> .libPaths(c(.libPaths(), "C:/"))
> .libPaths()
[1] "D:/Program Files/R/R-3.2.3/library" "C:/"   

在 foreach 中,库路径仍然是默认的:

> tmp = foreach(j = 1:2) %dopar% {.libPaths()}
> tmp
[[1]]
[1] "D:/Program Files/R/R-3.2.3/library"

[[2]]
[1] "D:/Program Files/R/R-3.2.3/library"

虽然我不确定 foreach 究竟是如何工作的,但我的想法是启动几个新的 Rscripts。在每个新的 Rscript 中,库路径将是 Rprofile.site 中指定的默认路径。

所以最方便的方法是在 D:\Program Files\R\R-3.2.3\etc\ 下的 Rprofile.site 中添加路径

另一种方法是手动加载库,即

tmp = foreach(j = 1:2) %dopar% {
          library(xxx, lib.loc = /xxx/xx)
          ...
      }

这更加灵活,尤其是在无法访问 Rprofile.site 时。

于 2016-06-17T05:20:32.293 回答
0

Hi here there is another solution:

foreach(i=(1:100), .packages=c("lubridate")) %dopar%{ .libPaths("R_Libs") library("CustomPackage")  some code here... }
于 2019-05-02T10:21:19.933 回答