【问题标题】:R Sys.getenv() returns the wrong valueR Sys.getenv() 返回错误的值
【发布时间】:2018-10-06 07:00:02
【问题描述】:

我在 ubuntu 中使用 R。返回的环境变量值错误。我将环境变量设置为一个值。磁盘崩溃后,我更改了它的值。但是,R 将始终返回旧值。不知道R在哪里缓存了旧值,坚持要返回旧值。

环境变量的新值

echo $WFDATA
/current/environment/value

启动一个新的 R 终端

R
> Sys.getenv('WFDATA')
[1] "/old/environment/value"

现在尝试将环境变量设置为新值

> Sys.setenv(WFDATA='/current/environment/value')
> Sys.getenv('WFDATA')
[1] "/current/environment/value"
> q()
Save workspace image? [y/n/c]: y

启动一个新的 R 终端,你仍然得到旧的值

> Sys.getenv('WFDATA')
[1] "/old/environment/value"
> 

不知道为什么 R 如此固执地记住旧值。任何人都可以提出解决此问题的方法吗?此问题出现在 R 会话和 Rscript 文件中。

【问题讨论】:

  • 你把 env var 改成 sudo 了吗?

标签: r environment-variables rscript


【解决方案1】:

我找到了问题的根源。其他人在根目录下设置了 R 环境。这样,环境始终是硬编码的值。我正在使用 Linux,这应该适用于大多数人。

in the /etc/R directory
ls
ldpaths  Makeconf  Renviron  Renviron.site  repositories  Rprofile.site

您可以在 Renviron 和 Renviron.site 中设置环境变量 这台机器上的所有 R 会话都会看到这些。格式与 shell使用的那些。

VARNAME=somevalue

在用户的主目录中,您可以通过在“.Renviron”文件中重新定义 KEY=value 对来覆盖这些值。可以将新的环境变量添加到此文件中。我还没有确认 R 会从用户的 shell 中学习并记住环境变量。其他人可以稍后更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2018-03-29
    • 2014-11-25
    • 2015-06-19
    • 2022-01-22
    • 2016-04-15
    相关资源
    最近更新 更多