当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R Startup R 会话开始时的初始化


R语言 Startup 位于 base 包(package)。

说明

R,启动机制如下。

除非--no-environ在命令行上给出,R搜索要处理的站点和用户文件以设置环境变量。站点文件的名称是环境变量指向的名称R_ENVIRON;如果未设置,‘base Rhome/etc/Renviron.site使用(如果存在,但在“factory-fresh”安装中不存在)。用户文件的名称可以通过以下方式指定R_ENVIRON_USER环境变量;如果未设置,则搜索的文件是“.Renviron' 在当前或用户的主目录中(按该顺序)。有关如何读取文件的信息,请参阅“详细信息”。

然后R搜索 site-wide 启动配置文件R代码除非命令行选项--no-site-file被给予。该文件的路径取自R_PROFILE环境变量(之后base path.expand)。如果未设置此变量,则默认为‘base Rhome/etc/Rprofile.site’,如果存在则使用它(在‘factory-fresh’安装中不存在)。此代码源自工作区(全局环境)。用户需要注意不要无意中在工作区中创建对象,通常建议使用local如果需要执行代码:请参阅示例。.Library.site可以被赋值,并且赋值将有效地修改基本命名空间中变量的值,其中.libPaths()找到它。也可以分配给.First.Last,但不建议在执行环境中分配给其他变量,并且在某些旧版本中不起作用R.

那么,除非--no-init-file被给予,R搜索用户个人资料,文件R代码。该文件的路径可以通过R_PROFILE_USER环境变量(和base path.expand将被执行)。如果未设置,则会生成一个名为“.R配置文件’ 在当前目录或用户的主目录中(按该顺序)搜索。用户配置文件来源于工作区。

请注意,当获取站点和用户配置文件时,仅加载 base 包,因此其他包中的对象需要通过例如utils::dump.frames 或显式加载相关包后。

R然后从‘加载用户工作区的已保存图像.RData' 在当前目录中,如果有的话(除非--no-restore-data或者--no-restore在命令行上指定)。

接下来,如果在搜索路径上找到函数.First,则将其作为.First()执行。最后,运行base包中的函数.First.sys()。这会调用 require 来附加 options("defaultPackages") 指定的默认包。如果包含 methods 包,则该包会提前附加(通过函数 .OptRequireMethods() ),以便命名空间初始化(例如来自用户工作区的初始化)能够正确进行。

一个函数.First(和.Last)可以在适当的‘.R配置文件' 或者 'Rprofile.site' 文件或已保存在 '.RData’。如果您在启动时想要一组与默认包不同的包,请插入对options在里面 '.R配置文件' 或者 'Rprofile.site' 文件。例如,options(defaultPackages = character())启动时不会附加任何额外的包(仅base包)(或套R_DEFAULT_PACKAGES=NULL运行前作为环境变量R)。使用options(defaultPackages = "")或者R_DEFAULT_PACKAGES=""强制执行 R系统默认。

在支持它的front-ends上,命令历史记录是从环境变量指定的文件中读取的R_HISTFILE(默认 '.历史' 在当前目录中)除非--no-restore-history或者--no-restore被指定。

命令行选项 - 香草暗示--no-site-file,--no-init-file,--no-environ和(除了R CMD)--no-restore

细节

请注意,启动时使用两种类型的文件:环境文件其中包含要设置的环境变量列表,以及配置文件其中包含R代码。

站点或用户环境文件中的行应该是以 # 开头的注释行,或者是 name=value 形式的行。后者将环境变量 name 设置为 value ,覆盖现有值。如果 value 包含 ${foo-bar} 形式的表达式,则该值是环境变量 foo 的值(如果已设置),否则为 bar 。对于 ${foo:-bar} ,如果设置为非空值,则值为 foo 的值,否则为 bar 。 (如果其形式为 ${foo} ,则默认为 "" 。)此结构可以嵌套,因此 bar 可以采用相同的形式(如 ${foo-${bar-blah}} )。请注意,大括号是必需的:例如 $HOME 将不会被解释。

value 中的前导和尾随空格被删除。然后以与 Unix shell 类似的方式处理 value:特别是删除前面没有反斜杠的(单或双)引号,并且删除除此类引号内的反斜杠。

为了可读性和未来兼容性,建议仅使用与 Unix shell 具有相同行为的结构。因此,变量的扩展应使用双引号(例如 "${HOME}" ,以防它们可能包含反斜杠),并且包含反斜杠的文字应使用单引号。如果变量值可能以反斜杠结尾,例如 Windows 上的 PATH,则可能需要保护以下引号,例如"${PATH}/" 。建议使用正斜杠而不是反斜杠。可以将文本混合在单引号和双引号中,请参见下面的示例。

在具有 sub-architectures 的系统(主要是 Windows)上,文件‘Renviron.site' 和 'Rprofile.site’首先在architecture-specific目录中查找,例如'base Rhome/etc/i386/Renviron.site’。以及例如'.Renviron.i386' 将优先于 ' 使用.Renviron’。

环境文件中的行长度(扩展后)有 100,000 字节的限制。

注意

启动代码期间无意与用户进行交互。尝试这样做可能会导致系统崩溃R过程。

在 Unix 版本上R还有一个文件‘base Rhome/etc/Renviron’这是在 start-up 处理的早期读取的。它包含由设置的环境变量R在配置过程中。该文件中的值可以在站点或用户环境文件中覆盖:请勿更改‘base Rhome/etc/Renviron’本身。请注意,这与‘base Rhome/etc/Renviron.site’。

命令行选项可能不适用于替代front-ends:它们不适用于 macOS 上的R.app

R CMD checkR CMD build并不总是读取标准启动文件,但它们总是读取特定的‘⁠Renviron⁠’文件。这些的位置可以通过环境变量控制R_CHECK_ENVIRONR_BUILD_ENVIRON。如果设置了这些值,它们的值将用作“⁠Renviron⁠' 文件;否则,文件‘〜/.R/check.Renviron' 或者 '〜/.R/build.Renviron’或使用sub-architecture-specific版本。

如果你想 '~/.Renviron' 或者 '〜/.Rprofile’被孩子忽视R进程(例如由R CMD checkR CMD build)、设置合适的环境变量R_ENVIRON_USER或者R_PROFILE_USER到(如果可能的话,Windows 上没有)""或一个不存在的文件的名称。

例子

## Not run: 
## Example ~/.Renviron on Unix
R_LIBS=~/R/library
PAGER=/usr/local/bin/less

## Example .Renviron on Windows
R_LIBS=C:/R/library
MY_TCLTK="c:/Program Files/Tcl/bin"
# Variable expansion in double quotes, string literals with backslashes in
# single quotes.
R_LIBS_USER="${APPDATA}"'\R-library'

## Example of setting R_DEFAULT_PACKAGES (from R CMD check)
R_DEFAULT_PACKAGES='utils,grDevices,graphics,stats'
# this loads the packages in the order given, so they appear on
# the search path in reverse order.

## Example of .Rprofile
options(width=65, digits=5)
options(show.signif.stars=FALSE)
setHook(packageEvent("grDevices", "onLoad"),
        function(...) grDevices::ps.options(horizontal=FALSE))
set.seed(1234)
.First <- function() cat("\n   Welcome to R!\n\n")
.Last <- function()  cat("\n   Goodbye!\n\n")

## Example of Rprofile.site
local({
  # add MASS to the default packages, set a CRAN mirror
  old <- getOption("defaultPackages"); r <- getOption("repos")
  r["CRAN"] <- "http://my.local.cran"
  options(defaultPackages = c(old, "MASS"), repos = r)
  ## (for Unix terminal users) set the width from COLUMNS if set
  cols <- Sys.getenv("COLUMNS")
  if(nzchar(cols)) options(width = as.integer(cols))
  # interactive sessions get a fortune cookie (needs fortunes package)
  if (interactive())
    fortunes::fortune()
})

## if .Renviron contains
FOOBAR="coo\bar"doh\ex"abc\"def'"

## then we get
# > cat(Sys.getenv("FOOBAR"), "\n")
# coo\bardoh\exabc"def'

## End(Not run)

也可以看看

有关 Windows 上 ‘home’ 目录的定义,请参阅‘rw-FAQ’ Q2.14。从运行中可以发现R经过Sys.getenv("R_USER").

.Last结束时的最终行动R会议。commandArgs用于访问命令行参数。

X11quartz 的帮助中提供了使用启动文件设置图形设备默认值的示例。

R 简介以获取更多命令行选项:Memory 的帮助文件中介绍了影响内存管理的选项。

readRenviron读书 '.Renviron’文件。

有关分析代码,请参阅 Rprof

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Initialization at Start of an R Session。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。