【问题标题】:How to set R_LIBS_SITE or how to share package site?如何设置 R_LIBS_SITE 或如何共享包站点?
【发布时间】:2016-09-29 17:13:40
【问题描述】:

这是this question 的一个通用版本。如何设置R_LIBS_SITE?我无法在 CentOS 7.2 和 openSUSE 42.1 以及最新的 R 3.3.1 上获得正确的值。

在带有来自 EPEL 的 R 的 CentOS 7.2 (Linux x86_64) 上,我得到:

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 重现类似的行为。

或者是否有其他推荐的方法来设置在所有用户之间共享的包站点?

【问题讨论】:

    标签: r packages


    【解决方案1】:

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

    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 中给出的列表中静默删除(再次与您的输出一样)。

    【讨论】:

      猜你喜欢
      • 2010-11-17
      • 2011-04-25
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多