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 check
和R CMD build
并不总是读取标准启动文件,但它们总是读取特定的‘Renviron’文件。这些的位置可以通过环境变量控制R_CHECK_ENVIRON和R_BUILD_ENVIRON。如果设置了这些值,它们的值将用作“Renviron' 文件;否则,文件‘〜/.R/check.Renviron' 或者 '〜/.R/build.Renviron’或使用sub-architecture-specific版本。
如果你想 '~/.Renviron' 或者 '〜/.Rprofile’被孩子忽视R进程(例如由R CMD check
和R 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
用于访问命令行参数。
X11
和 quartz
的帮助中提供了使用启动文件设置图形设备默认值的示例。
R 简介以获取更多命令行选项:Memory 的帮助文件中介绍了影响内存管理的选项。
readRenviron
读书 '.Renviron’文件。
有关分析代码,请参阅 Rprof
。
相关用法
- R Sys.getenv 获取环境变量
- R Sys.localeconv 查找当前语言环境中数字和货币表示形式的详细信息
- R Sys.setFileTime 设置文件时间
- R Sys.info 提取系统和用户信息
- R Syntax 运算符语法和优先级
- R Signals 中断 R 的执行
- R Sys.sleep 暂停执行一段时间
- R Special 数学的特殊函数
- R Sys.setenv 设置或取消设置环境变量
- R Sys.getpid 获取 R 会话的进程 ID
- R Sys.readlink 读取文件符号链接
- R Sys.glob 文件路径上的通配符扩展
- R Sys.which 查找可执行文件的完整路径
- R S3method 注册S3方法
- R Sys.time 获取当前日期和时间
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- R lapply 对列表或向量应用函数
- R dump R 对象的文本表示
- R rank 样本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 将文本推回连接
- R strsplit 分割字符向量的元素
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Initialization at Start of an R Session。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。