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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。