2016-09-25 102 views
1

这是this question的一个有点泛化的版本。我该如何设置R_LIBS_SITE?在最新的R 3.3.1中,我无法在CentOS 7.2和openSUSE 42.1上获得适当的值。如何设置R_LIBS_SITE或如何共享包站点?

在CentOS 7.2(Linux的x86_64的)与来自EPEL R I得到:

R version 3.3.1 (2016-06-21) -- "Bug in Your Hair" 
... 
Platform: x86_64-redhat-linux-gnu (64-bit) 
... 
> .libPaths() 
[1] "/usr/lib64/R/library" "/usr/share/R/library" 
> .Library 
[1] "/usr/lib64/R/library" 
> .Library.site 
[1] "/usr/lib64/R/library" "/usr/share/R/library" 
> R.home(component = "home") 
[1] "/usr/lib64/R" 

但是,各Renviron包括以下内容:

$ grep R_LIBS_SITE /usr/lib64/R/etc/Renviron 
R_LIBS_SITE=${R_LIBS_SITE-'/usr/local/lib/R/site-library:/usr/local/lib/R/library:/usr/lib64/R/library:/usr/share/R/library'} 

显然,该设置不正确时施加我开始R.然而,例如在同一个文件中的R_LIBS_USER中的 变化被应用。此外,R_LIBS_SITE没有完全被忽略,因为它设置为

R_LIBS_SITE='/usr/local/lib/R/site-library' 

产生

> .Library.site 
character(0) 

我看不出R_LIBS_SITE可以在其他地方覆盖。我得到 中的R相同的行为,当我与

R --no-environ --no-site-file --no-init-file 

启动它我可以重现与openSUSE的一个类似的行为。

或者还有另一种建议的方式来设置所有用户共享的包站点?

回答

2

问题的一种可能的解释是,某些目录不存在。不存在的目录将从列表中静静地移除。所以,如果你设置

R_LIBS_SITE='/usr/local/lib/R/site-library'

和目录不存在,.Library.site将是一个空字符串(如在你的例子)。根据示例中的输出结果,如果目录/usr/local/lib/R/site-library/usr/local/lib/R/library不存在,它们将从Renviron文件的R_LIBS_SITE列表中以无提示的方式被删除(同样在输出中)。