R语言中,使用Sys.getenv()函数返回的值不正确。

3

我正在使用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会话和R脚本文件中都会出现。


你有用sudo更改环境变量吗? - undefined
1个回答

2

我找到了问题的源头。有人在根目录下设置了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学习和记住环境变量。其他人可以稍后更新它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接