首页 > 解决方案 > 在 .Rprofile 和 .Renviron 中设置 R 的默认行为。了解在哪里做什么

问题描述

我试图了解文件 .Renviron 和 .Rprofile 的使用。如果我理解正确的话,.Rprofile是一种启动脚本,来源于 R 代码,它设置用户可能一直需要的选项和环境变量,或者用于特定项目。另一方面,.Renviron在 .Rproject 之前加载,并且仅定义环境变量。

根据设计,我知道 R 将加载用户或项目级别的 .Renviron 和 .Rprofile 文件,但它不会同时加载用户和项目级别的文件。本质上,R 只会加载项目特定的 .Rprofile 和 .Renviron 文件,前提是它们已定义。也就是说,将一些库和函数放在用户级别 .Rprofile 中是谨慎的,因为我几乎一直都需要它(例如,我经常使用dplyr语法),同时我想加载特定于项目的库和函数。

.Renviron 文件的目的对我来说更加难以捉摸。据我了解,它的目的是存储环境变量,比如密码、API 密钥等。但是,我也可以使用 .Rprofile 在 .Rprofile 中设置环境变量Sys.setenv()。例如,我在项目的 .Rprofile 中设置了环境变量,以便将并行化与以下包一起使用:

Sys.setenv(OMP_NUM_THREADS=parallel::detectCores())
library(OpenMx)

由于 .Renviron 不使用代码,我的假设是我可以使用以下语法将此行放入 .Renviron 文件中:

OMP_NUM_THREADS=[number of cores]

但是,我发现关于如何在 .Renviron 中设置环境变量的有用信息很少,以及在这里放什么是可取的。

因此,我的问题是:

  1. 在项目中工作时,如何同时加载用户和项目级别的 .Renviron 和 .Rproject 文件?
  2. 我通常会在 .Renviron 中放入哪些环境变量?(任何关于如何设置变量的列表或教程将不胜感激。)
  3. 在哪些情况下,建议将环境变量添加到 .Renviron 而不是Sys.setenv()在 .Rprofile 中使用,反之亦然?

标签: rrprofilerenviron

解决方案


但是,我也可以使用 Sys.setenv() 在 .Rprofile 中设置环境变量。

“是的,但是”这些可以在标准 POSIX 行为下不会改变之前必须设置变量的运行进程。

我就像你试图尽可能长时间地只使用~/.Rprofile(甚至只Rprofile.site使用整台机器)但最终添加了一些.Renviron东西

  • R_LIBS_USER因为""我不想在下面安装~
  • R_MAX_NUM_DLLS必须在这里
  • 加上一些服务代币
  • 加上一个reticulate选项
  • 加上一个R CMD check选项

所以在某些情况下,您实际上必须使用.Renviron(或Renvirob.site)。


推荐阅读