我在Linux Centos上使用bash。我从$HOME/.bashrc设置R_LIBS_USER。我还尝试在$HOME/.Renviron上设置它
# in .bashrc
export R_LIBS_USER=$HOME/lib/R/site-library
cat .Renviron
R_LIBS_USER=$HOME/lib/R/site-library
我确保R_LIBS_USER设置正确。Echo显示正确的值。但是,从这个终端运行R,给出正确的R_LIBS_USER值,并不会获得这个值。
> .libPaths()
[1] "/global/software/r/3.5.0/lib64/R/library"
.libPaths()只显示默认的库路径,而不是我的个人路径。$HOME/lib/R/site-library不在.libPaths()的输出中。当我试图在$HOME/lib/site-library中加载库时,我得到了package not found错误。我可以从R内部添加个人路径,然后我可以在我的个人R目录中加载库。
> .libPaths(c("/myhome/lib/R/site-library", .libPaths()))
> .libPaths()
[1] "/myhome/lib/R/site-library"
[2] "/global/software/r/3.5.0/lib64/R/library"
我已经找了两天来寻找解决方案。其他人也有类似的问题,也没有解决方案。我曾经能够选择个人库路径,但不知道我做了什么更改,从而取消了这种正常行为。
发布于 2018-12-29 15:20:11
最后弄清楚了,.Renviron文件不像.bashrc那样对变量$HOME进行扩展。R_LIBS_USER变量将设置为$HOME/lib/R/site-library。当$HOME未展开时,这是无效路径。R不会告诉您这是错误的。只是默默地继续它的正常业务(我认为这是R中的设计缺陷,没有异常处理)。
.libPaths("/nonexistent/path") # has no effect on the result of .libPaths()
# except that it will maintain the default R library and remove any exisiting
# personal library. And will not tell you anything wrong with the nonexistent
# directory
在.libPath("/nonexistent/path")调用之前,向量中有两个元素:一个/default/R/library,另一个/my/persoanl/R/lib,赋值后只剩下前者。R充满了惊喜。
https://stackoverflow.com/questions/53967385
复制相似问题