前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

R启动

作者头像
王诗翔呀
发布2023-02-28 16:40:41
5490
发布2023-02-28 16:40:41
举报
文章被收录于专栏:优雅R
  • 原文: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%3A.Rprofile+interactive&type=Code

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • .Renviron
  • .Rprofile
    • 重现性
    • 静默启动文件
      • 参考资料
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档