我在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设置正确。回声显示正确的值。但是,从提供正确R_LIBS_USER值的终端运行R不会获得此值。
> .libPaths()
[1] "/global/software/r/3.5.0/lib64/R/library"
.libPaths()仅显示默认库路径,而不是我的个人路径。 $ HOME / lib / R / site-library不在.libPaths()的输出中。当我尝试在$ HOME / lib / site-library中加载库时,出现未找到包错误。我可以从R内部添加个人路径,然后可以在个人R lib目录中加载库。
> .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"
我已经搜寻了两天以寻找解决方案。其他人也有类似的问题,也没有解决方案。我曾经能够选择个人图书馆的路径,但不知道我所做的更改消除了这种正常行为。
答案 0 :(得分:1)
最后弄清楚了,.Renviron文件不对变量$ HOME进行扩展,不像.bashrc中那样。 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充满惊喜。