我使用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.r,sp.util在其中加载script.r并加载正确的(即packrat-local)依赖项。我不想必须从给定路径启动 Rscript。
我需要设置libPaths()自己R_LIB_USER来做吗?
并说我需要多个包使用packrat它甚至是执行上述操作的可行选择吗?