R忽略R_LIBS_USER

时间:2018-12-29 06:53:28

标签: r bash

我在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"

我已经搜寻了两天以寻找解决方案。其他人也有类似的问题,也没有解决方案。我曾经能够选择个人图书馆的路径,但不知道我所做的更改消除了这种正常行为。

1 个答案:

答案 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充满惊喜。