我使用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
它甚至是执行上述操作的可行选择吗?