我正在将软件包安装到特定目录,然后使用以下命令加载到库中:
library(CustomPackage, lib.loc = "R_Libs")
然后,在使用 foreach 时,我无法弄清楚如何从该自定义位置“R_Libs”加载这个包。
foreach(i=(1:100), .packages=c("lubridate","CustomPackage")) %dopar% {
some code here...
}
任何想法如何强制从“R_Libs”目录中读取一个包?
我正在将软件包安装到特定目录,然后使用以下命令加载到库中:
library(CustomPackage, lib.loc = "R_Libs")
然后,在使用 foreach 时,我无法弄清楚如何从该自定义位置“R_Libs”加载这个包。
foreach(i=(1:100), .packages=c("lubridate","CustomPackage")) %dopar% {
some code here...
}
任何想法如何强制从“R_Libs”目录中读取一个包?
在 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 时。
Hi here there is another solution:
foreach(i=(1:100), .packages=c("lubridate")) %dopar%{ .libPaths("R_Libs") library("CustomPackage") some code here... }