r - 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 文件中。
解决方案
我弄清楚了我的问题的根源。其他人在根目录下设置了 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 中学习并记住环境变量。其他的可以稍后更新。
推荐阅读
- r - 从向量中删除连续的重复符号
- android - android.database.sqlite.SQLiteException:靠近“编码”:语法错误(代码 1)
- qlikview - QlikView 报表 - 如何将新列/字段添加到现有报表
- postgresql - 使其在postgresql knex中只能有一对两个不同的ID
- ios - 在 swift 中使用正则表达式提取和打印字符串
- javascript - 如何在 nunjucks 中添加数据?
- python - 基于坐标从 xarray 获取数据变量也存储在数据变量中
- apache-spark - 无法在 spark 中配置自定义 hive-metastore-client
- javascript - Gridsters 改变元素的位置
- c# - 如何使用 appsettings 文件读取进程名称