首页 > 解决方案 > R Sys.getenv() 返回错误的值

问题描述

我在 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 文件中。

标签: renvironment-variablesrscript

解决方案


我弄清楚了我的问题的根源。其他人在根目录下设置了 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 中学习并记住环境变量。其他的可以稍后更新。


推荐阅读