2015-11-03 114 views
0

指定我安装一个包到一个特定的目录,然后在库加载使用包的位置:中的foreach

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

然后使用的foreach我有麻烦搞清楚如何从加载这个包时自定义位置“R_Libs”。

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

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

+0

将目录添加到'?.libPaths' – rawr

回答

1

在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中指定的默认路径。

所以最方便的方法是在Rprofile.site下添加d路径:\ Program Files文件\ r \ R-3.2.3 \等\

另一种方式是手工加载库,即

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

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