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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。