r - 在 .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 中设置环境变量的有用信息很少,以及在这里放什么是可取的。
因此,我的问题是:
- 在项目中工作时,如何同时加载用户和项目级别的 .Renviron 和 .Rproject 文件?
- 我通常会在 .Renviron 中放入哪些环境变量?(任何关于如何设置变量的列表或教程将不胜感激。)
- 在哪些情况下,建议将环境变量添加到 .Renviron 而不是
Sys.setenv()
在 .Rprofile 中使用,反之亦然?
解决方案
但是,我也可以使用 Sys.setenv() 在 .Rprofile 中设置环境变量。
“是的,但是”这些可以在标准 POSIX 行为下不会改变之前必须设置变量的运行进程。
我就像你试图尽可能长时间地只使用~/.Rprofile
(甚至只Rprofile.site
使用整台机器)但最终添加了一些.Renviron
东西
R_LIBS_USER
因为""
我不想在下面安装~R_MAX_NUM_DLLS
必须在这里- 加上一些服务代币
- 加上一个
reticulate
选项 - 加上一个
R CMD check
选项
所以在某些情况下,您实际上必须使用.Renviron
(或Renvirob.site
)。
推荐阅读
- sql - 如何从多个模式的所有表中获取所有列的最小值、最大值、平均值?
- bash - 在我的脚本中创建通过电子邮件发送的内容的日志
- spring-webflux - 覆盖 Spring webflux 项目的默认 Threadpool 执行器的效果如何?
- sql - 计算 SQL (PostgreSQL) 中的最大值
- javascript - Leaflet _ ReactJS - 在哪里可以找到 invalidateSize 属性?
- java - “没有为 java.util.Optional 注册映射器”使用 JDBI v2 和 java.util.Optional
- python - 如何修复 NoneType 对象不可调用错误?
- python - Python:将点分配给 bin 的更快或无循环方式?
- sql - 有没有办法用索引加速这个多表查询?
- java - 为列表属性创建 PATCH 端点