当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R ns-load 加载和卸载命名空间


R语言 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

NULL 或要记录在包中的对象 .Depends 中的依赖关系的字符向量。

package

命名要加载的包/名称空间的字符串。

lib.loc

指定库搜索路径的字符向量(R可供搜索的 Library 树。

keep.source

现在除了软件包安装期间之外都被忽略。

keep.parse.data

除软件包安装期间外均被忽略。

partial

逻辑性;如果为 true,则在加载代码后立即停止。

versionCheck

NULL 或版本规范(包含组件 opversion 的列表)。

quietly

逻辑:是否应该抑制进度和错误消息?

name

字符串或 ‘name’,请参阅包的 as.symbol ,例如 "stats"

exclude, include.only

字符向量;请参阅library

...

要传递给 loadNamespace 的更多参数。

细节

当使用 library 加载名称空间和所需的任何导入时,通常会隐式调用函数 loadNamespaceattachNamespace。然而,有时直接调用这些函数可能很有用。

loadNamespace 加载指定的名称空间并将其注册到内部数据库中。当名称空间之一已加载时,加载该名称空间的请求无效。这些参数与 library 的相应参数具有相同的含义,其帮助页面解释了如何选择特定安装包的详细信息。加载后,loadNamespace 在名称空间中查找名为.onLoad 的钩子函数作为内部变量(不应将其导出)。部分加载用于支持延迟加载安装。

(可选)在加载过程中检查包许可证:请参阅 library 帮助中的“许可证”部分。

loadNamespace 不会将其加载的名称空间附加到搜索路径。 attachNamespace 可用于将包含名称空间导出值的框架附加到搜索路径(但这几乎总是通过 library 完成)。钩子函数 .onAttach 在附加名称空间导出后运行。

requireNamespaceloadNamespace 的包装器,类似于返回逻辑值的 require

loadedNamespaces 返回已加载名称空间名称的字符向量。

isNamespaceLoaded(pkg) 相当于 pkg %in% loadedNamespaces() 但效率更高。

unloadNamespace 可用于尝试强制卸载名称空间。如果附加了名称空间,则首先对其进行 detach 编辑,从而在名称空间中运行 .onDetach.Last.lib 函数(如果导出)。如果名称空间是由其他加载的名称空间导入的,则会发出错误信号并且不会卸载该名称空间。如果定义了,则在从内部注册表中删除名称空间之前会运行钩子函数.onUnload

请参阅 detach 帮助中有关卸载和重新加载名称空间的一些问题的注释。

attachNamespace 以不可见的方式返回它添加到搜索路径的包环境。

loadNamespace 返回名称空间环境,可以是已加载的环境,也可以是函数导致加载的环境。

requireNamespace 如果成功则返回 TRUEFALSE

loadedNamespaces 返回 character 向量。

unloadNamespace 无形地返回 NULL

追踪

来自R4.1.0 操作loadNamespace可以追踪,这可以帮助追踪意外消息的原因(包括它们来自哪个包)loadNamespace以多种方式调用,包括从自身调用和由::并且可以通过调用load)。设置环境变量_R_TRACE_LOADNAMESPACE_更改为数值将生成有关进度的附加消息。非零值,例如1,报告正在加载哪个名称空间以及加载完成时:值24报告越来越详细。负值保留用于跟踪特定函数,其当前含义记录在 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”.

也可以看看

getNamespaceasNamespacetopenv.onLoad(等);进一步environment

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Loading and Unloading Name Spaces。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。