ns-load
位于 base
包(package)。 说明
加载和卸载名称空间的函数。
用法
attachNamespace(ns, pos = 2L, depends = NULL, exclude, include.only)
loadNamespace(package, lib.loc = NULL,
keep.source = getOption("keep.source.pkgs"),
partial = FALSE, versionCheck = NULL,
keep.parse.data = getOption("keep.parse.data.pkgs"))
requireNamespace(package, ..., quietly = FALSE)
loadedNamespaces()
unloadNamespace(ns)
isNamespaceLoaded(name)
参数
ns |
字符串或名称空间对象。 |
pos |
指定要附加的位置的整数。 |
depends |
|
package |
命名要加载的包/名称空间的字符串。 |
lib.loc |
指定库搜索路径的字符向量(R可供搜索的 Library 树。 |
keep.source |
现在除了软件包安装期间之外都被忽略。 |
keep.parse.data |
除软件包安装期间外均被忽略。 |
partial |
逻辑性;如果为 true,则在加载代码后立即停止。 |
versionCheck |
|
quietly |
逻辑:是否应该抑制进度和错误消息? |
name |
字符串或 ‘name’,请参阅包的 |
exclude, include.only |
字符向量;请参阅 |
... |
要传递给 |
细节
当使用 library
加载名称空间和所需的任何导入时,通常会隐式调用函数 loadNamespace
和 attachNamespace
。然而,有时直接调用这些函数可能很有用。
loadNamespace
加载指定的名称空间并将其注册到内部数据库中。当名称空间之一已加载时,加载该名称空间的请求无效。这些参数与 library
的相应参数具有相同的含义,其帮助页面解释了如何选择特定安装包的详细信息。加载后,loadNamespace
在名称空间中查找名为.onLoad
的钩子函数作为内部变量(不应将其导出)。部分加载用于支持延迟加载安装。
(可选)在加载过程中检查包许可证:请参阅 library
帮助中的“许可证”部分。
loadNamespace
不会将其加载的名称空间附加到搜索路径。 attachNamespace
可用于将包含名称空间导出值的框架附加到搜索路径(但这几乎总是通过 library
完成)。钩子函数 .onAttach
在附加名称空间导出后运行。
requireNamespace
是 loadNamespace
的包装器,类似于返回逻辑值的 require
。
loadedNamespaces
返回已加载名称空间名称的字符向量。
isNamespaceLoaded(pkg)
相当于 pkg %in% loadedNamespaces()
但效率更高。
unloadNamespace
可用于尝试强制卸载名称空间。如果附加了名称空间,则首先对其进行 detach
编辑,从而在名称空间中运行 .onDetach
或 .Last.lib
函数(如果导出)。如果名称空间是由其他加载的名称空间导入的,则会发出错误信号并且不会卸载该名称空间。如果定义了,则在从内部注册表中删除名称空间之前会运行钩子函数.onUnload
。
请参阅 detach
帮助中有关卸载和重新加载名称空间的一些问题的注释。
值
attachNamespace
以不可见的方式返回它添加到搜索路径的包环境。
loadNamespace
返回名称空间环境,可以是已加载的环境,也可以是函数导致加载的环境。
requireNamespace
如果成功则返回 TRUE
或 FALSE
。
loadedNamespaces
返回 character
向量。
unloadNamespace
无形地返回 NULL
。
追踪
来自R4.1.0 操作loadNamespace
可以追踪,这可以帮助追踪意外消息的原因(包括它们来自哪个包)loadNamespace
以多种方式调用,包括从自身调用和由::
并且可以通过调用load
)。设置环境变量_R_TRACE_LOADNAMESPACE_更改为数值将生成有关进度的附加消息。非零值,例如1
,报告正在加载哪个名称空间以及加载完成时:值2
到4
报告越来越详细。负值保留用于跟踪特定函数,其当前含义记录在 source-code 注释中。
加载标准包永远不会被追踪。
例子
(lns <- loadedNamespaces())
statL <- isNamespaceLoaded("stats")
stopifnot( identical(statL, "stats" %in% lns) )
## The string "foo" and the symbol 'foo' can be used interchangably here:
stopifnot( identical(isNamespaceLoaded( "foo" ), FALSE),
identical(isNamespaceLoaded(quote(foo)), FALSE),
identical(isNamespaceLoaded(quote(stats)), statL))
hasS <- isNamespaceLoaded("splines") # (to restore if needed)
Sns <- asNamespace("splines") # loads it if not already
stopifnot( isNamespaceLoaded("splines"))
if (is.null(try(unloadNamespace(Sns)))) # try unloading the NS 'object'
stopifnot( ! isNamespaceLoaded("splines"))
if (hasS) loadNamespace("splines") # (restoring previous state)
作者
Luke Tierney and R-core
参考
The ‘Writing R Extensions’ manual, section “Package namespaces”.
也可以看看
相关用法
- R ns-dblcolon 双冒号和三冒号运算符
- R ns-internals 命名空间内部结构
- R ns-reflect 命名空间反射支持
- R ns-hooks 命名空间事件的钩子
- R ns-topenv 顶级环境
- R noquote “无引号”字符串打印类
- R numeric 数值向量
- R numeric_version 数字版本
- R nargs 函数的参数数量
- R normalizePath 以规范形式表达文件路径
- R nchar 计算字符数(或字节数或宽度)
- R norm 计算矩阵的范数
- R name 名称和符号
- R nrow 数组的行/列数
- R names 对象的名称
- R nlevels 因子的水平数
- 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-devel大神的英文原创作品 Loading and Unloading Name Spaces。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。