userhooks
位於 base
包(package)。 說明
這些函數允許用戶設置在附加/分離包以及加載(卸載)命名空間之前要采取的操作。
用法
getHook(hookName)
setHook(hookName, value,
action = c("append", "prepend", "replace"))
packageEvent(pkgname,
event = c("onLoad", "attach", "detach", "onUnload"))
參數
hookName |
字符串:鉤子名稱 |
pkgname |
字符串:包/命名空間名稱 |
event |
字符串:包的事件。可以縮寫。 |
value |
一個函數或函數列表,或用於 |
action |
應采取的行動。可以縮寫。 |
細節
setHook
為用戶提供了注冊鉤子的通用機製,即從係統(或用戶)函數調用的函數列表。最初的一組鉤子與包/命名空間上的事件相關聯:這些鉤子通過調用 packageEvent
來命名。
要完全刪除鉤子,請調用 setHook(hookName, NULL, "replace")
。
當R包附於library
或者通過其他方式加載,可以調用初始化代碼。看.onLoad
有關初始化期間調用的包鉤子函數的說明。用戶可以通過提供的鉤子添加自己的初始化代碼setHook()
,函數將被稱為funname(pkgname, pkgpath)
裏麵一個try
稱呼。
事件的順序取決於定義了哪些鉤子,以及包是附加的還是剛剛加載的。在定義了所有鉤子並附加了包的情況下,初始化事件的順序如下:
-
包命名空間已加載。
-
包的
.onLoad
函數已運行。 -
如果 S4 方法調度已打開,則運行
setLoadAction
設置的任何操作。 -
命名空間是密封的。
-
用戶的
"onLoad"
鉤子已運行。 -
該包將添加到搜索路徑中。
-
包的
.onAttach
函數已運行。 -
包裝環境是密封的。
-
用戶的
"attach"
鉤子已運行。
當分離包並卸載其命名空間時,會運行類似的序列(但相反):
-
用戶的
"detach"
鉤子已運行。 -
包的
.Last.lib
函數已運行。 -
該包將從搜索路徑中刪除。
-
用戶的
"onUnload"
鉤子已運行。 -
包的
.onUnload
函數已運行。 -
包命名空間已卸載。
請注意,當R會話結束,包沒有分離,命名空間也沒有卸載,所以相應的鉤子不會運行。
另請注意,某些用戶鉤子是在包不在搜索路徑上的情況下運行的,因此在這些鉤子中,需要使用雙(或三)冒號運算符來引用包中的對象,如示例中所示。
如果添加多個鉤子,它們通常按 getHook
顯示的順序運行,但 "detach"
和 "onUnload"
鉤子以相反的順序運行,因此包事件的默認設置是添加鉤子 ‘inside’ 現有鉤子。
鉤子存儲在基礎包的環境 .userHooksEnv
中,名稱為 ‘mangled’。
值
對於 getHook
函數,函數列表(可能為空)。對於setHook
函數,沒有返回值。對於 packageEvent
,派生的鉤子名稱(字符串)。
注意
鉤子需要在它們修改的事件之前設置:對於標準包,這可能會出現問題,因為methods
在啟動序列的早期加載和附加。通常設置鉤子的位置如下例所示,位於‘.R配置文件' 文件,但這不適用於methods
.
例子
setHook(packageEvent("grDevices", "onLoad"),
function(...) grDevices::ps.options(horizontal = FALSE))
也可以看看
有關雙冒號和三冒號運算符的討論,請參閱::
。
相關用法
- R unlist 展平列表
- R unlink 刪除文件和目錄
- R unname 刪除名稱或暗名稱
- R units 單位
- R unique 提取獨特元素
- R utf8Conversion 將整數向量與 UTF-8 編碼的字符向量相互轉換
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
- R rank 樣本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 將文本推回連接
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R invisible 將打印模式更改為不可見
- R noquote “無引號”字符串打印類
- R warning 警告信息
- R rapply 遞歸地將函數應用於列表
- R basename 操作文件路徑
- R with 評估數據環境中的表達式
- R formals 訪問和操縱形式參數
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Functions to Get and Set Hooks for Load, Attach, Detach and Unload。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。