我使用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
并加载正确的(即包装本地的)依赖项。我不想从给定的路径启动Rscript。
我是否需要将libPaths()
自己设置为R_LIB_USER
来执行此操作?
并且说我需要使用packrat
的多个包,它是否是一个可行的选择来执行上述操作?