3

我使用packrat构建了一个包来处理依赖版本。

@nyzls65c:~/private/research$ tree -L 1 -a sp.util  
sp.util                                                     
|-- .Rbuildignore                                           
|-- .Rhistory                                               
|-- .Rprofile                                               
|-- .Rproj.user                                             
|-- DESCRIPTION                                             
|-- NAMESPACE                                               
|-- R                                                       
|-- Read-and-delete-me                                      
|-- man                                                     
|-- packrat                                                 
|-- sp.util.Rproj 

当我R从包路径开始时,~/private/research/sp.util我可以看到 packrat 处理我的库:

@nyzls65c:~/private/research/sp.util$ Rscript -e ".libPaths()"                       
WARNING: ignoring environment value of R_HOME                                                
[1] "~/private/research/sp.util/packrat/lib/x86_64-redhat-linux-gnu/3.3.0"
[2] "~/private/research/sp.util/packrat/lib-ext"                          
[3] "~/private/research/sp.util/packrat/lib-R"

当我从别处开始

@nyzls65c:~/private/research$ Rscript -e ".libPaths()"        
WARNING: ignoring environment value of R_HOME                         
NULL                                                                  
[1] "~/R/x86_64-redhat-linux-gnu-library/3.3"      
[2] "/usr/lib64/R/library"                                            
[3] "/usr/share/R/library"                                            

我猜想什么packrat是加载.Rprofile它在包目录中生成的文件并设置.libPaths().

问题是当我这样做时library(sp.util),除非我在正确的目录中,否则将加载错误的包。(我通过sessionInfo() 从内部/sp.util和外部开始进行测试,并且从逻辑上讲,其中的包Depends不一样)

我想要做的是使用Rscript /path/script.rsp.util在其中加载script.r并加载正确的(即packrat-local)依赖项。我不想必须从给定路径启动 Rscript。

我需要设置libPaths()自己R_LIB_USER来做吗?

并说我需要多个包使用packrat它甚至是执行上述操作的可行选择吗?

4

0 回答 0