R启动

2023-02-28 16:40:41 浏览数 (1)

  • 原文:https://rstats.wtf/r-startup.html

R被设计用于共享计算资源,如 Linux 服务器。因此,R的启动为个性化定制提供了很多途径:既适用于系统的每个用户,也适用于每个单独的用户。然而,这种灵活性伴随着代价的:复杂性。

当然,R 的启动过程相当复杂:

R启动流程,来源:Thomas Lin Pedersen[1]

然而,大多数 R 用户可以忽略这种复杂性的大部分内容而专注于两个主要文件。

  1. `.Renviron`[2] - 其中包含要在R会话中设置的环境变量。
  2. `.Rprofile`[3] - 其中包含在每个会话中运行的R代码。

这些文件是更广泛的定制文件家族(通常称为 dotfiles[4])的R特定实例。它们被用来调整许多程序的行为,特别是那些在unix命令行中有根的程序。

很多人都把他们的 dotfile 存储在 GitHub[5] 上,一个找到灵感的好方法就是浏览其他人的dotfile存储库。找到R特定的dotfiles的一种方法是在 GitHub上搜索 filename:.Rprofile[6]

.Renviron

.Renviron 文件用于定义敏感信息,如 API 密钥(如 GitHub 或 twitter),以及R特定的环境变量,如历史大小(R_HISTSIZE=100000)和默认库路径 R_LIBS_USER

.Renviron 文件包含需要设置的环境变量列表。它的内容不是 R 代码,而是使用类似于命令行 Shell 类似的语法。

编辑 .Renviron 文件最简单的方式是运行 usethis::edit_r_environ()

一个 .Renviron 文件简单的例子:

代码语言:javascript复制
R_HISTSIZE=100000
GITHUB_PAT=abc123
R_LIBS_USER=~/R/%p/%v

.Rprofile

.Rprofile 文件包含 R 启动时要运行的 R 代码。它在 .Renviron 文件运行后被执行。一般 .Rprofile 位于用户的家目录(即~/.Rprofile),然而可以通过设置 R_PROFILE_USER 环境变量进行修改。

编辑 .Rprofile 文件最简单的方式是运行 usethis::edit_r_profile()

.Rprofile 文件常被用来干的事情:

  1. 设置默认的 CRAN 镜像。
  2. 写一个欢迎信息。
  3. 自定义 R 的提示符。
  4. 修改选项,例如屏幕宽度、数值显示。
  5. 加载常用的 R 包(需要特别小心)。
  6. 设置常用函数的别名/快捷方式。

重现性

一个好的经验法则是,你应该只把你在 R 终端上交互式运行的东西放在 .Rprofile 文件中。如果它出现在R脚本或 R Markdown 文件中,它不应该出现在你的 .Rprofile 文件中。

如果你在 .Rprofile 中设置了这些选项,那么尝试在没有 .Rprofile 的另一个系统上运行你的一个脚本,它将不再是可重复的。一些有问题的例子是加载分析中使用的包(如 dplyr 或 ggplot2)或更改默认选项,这些选项会改变输出的值,如options(stringsAsFactors = FALSE)

此外,由于 .Rprofile 由每个R进程(包括由R自身启动的进程)运行,因此使用interactive()保护大部分代码是很重要的,这样它只在交互式会话(用终端控制的会话)中运行。

.Rprofile一个例子:

代码语言:javascript复制
options(repos = c(CRAN = "https://cran.rstudio.org"))

if (interactive()) {
  options(width = 120)
}

静默启动文件

在启动 R 时,可以使用--vanilla参数在没有任何启动文件的情况下运行R。在RStudio中,你可以通过检查项目选项->在会话启动/恢复时禁用 .Rprofile 执行,从而在没有任何启动文件的情况下运行 R。你还可以选择性地分别使用--no-init-file--no-site-file 禁用用户或站点的 .Rprofile,并使用 --no-environ 禁用环境变量文件。

.Renviron.Rprofile 都必须以换行符结束。如果没有,则忽略最后一行,不发出警告或错误。

参考资料

[1]

Thomas Lin Pedersen: https://twitter.com/thomasp85/status/961553618196418560

[2]

.Renviron: https://rstats.wtf/r-startup.html#renviron

[3]

.Rprofile: https://rstats.wtf/r-startup.html#rprofile

[4]

dotfiles: https://www.quora.com/What-are-dotfiles

[5]

dotfile 存储在 GitHub: https://dotfiles.github.io/

[6]

filename:.Rprofile: https://github.com/search?q=filename:.Rprofile interactive&type=Code

0 人点赞