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


R getFromNamespace 用于开发命名空间的实用函数


R语言 getFromNamespace 位于 utils 包(package)。

说明

用于访问和替换命名空间中的非导出函数的实用函数,用于开发具有命名空间的包。

它们不应该在生产代码中使用(也许 assignInMyNamespace 除外,但请参阅“注释”)。

用法

getFromNamespace(x, ns, pos = -1, envir = as.environment(pos))

assignInNamespace(x, value, ns, pos = -1,
                  envir = as.environment(pos))

assignInMyNamespace(x, value)

fixInNamespace(x, ns, pos = -1, envir = as.environment(pos), ...)

参数

x

对象名称(以字符串形式给出)。

value

一个R对象。

ns

命名空间,或给出命名空间的字符串。

pos

在哪里查找对象:请参阅get

envir

指定要查看的环境的另一种方法。

...

要传递给编辑器的参数:请参阅edit

细节

assignInMyNamespace 旨在从包内的函数调用,并选择命名空间作为调用它的函数的环境。

命名空间可以通过多种方式指定。例如,使用 ns = "stats" 是最直接的,但可以通过用于 get 的任何方法来指定加载的包: ns 也可以是打印为 <namespace:foo> 的环境。

getFromNamespace 类似于(但早于)::: 运算符:它在指定命名空间的方式上更加灵活。

fixInNamespace 在名为 x 的对象上调用 edit,并分配修改后的对象来代替原始对象。为了与 fix 兼容,x 可以不加引号。

getFromNamespace 返回找到的对象(或给出错误)。

调用 assignInNamespaceassignInMyNamespacefixInNamespace 是因为它们会产生更改命名空间中的对象的副作用。

警告

assignInNamespace 不应在最终代码中使用,如果从包中调用,将来会抛出错误。某些用途已经被禁止。

注意

assignInNamespaceassignInMyNamespacefixInNamespace 更改命名空间中的副本,但不会更改已从命名空间导出的任何副本,特别是包中该名称的对象(如果已附加)以及已导入到其他文件中的任何副本命名空间。它们实际上仅用于未从名称空间导出的对象。如果发现注册为 S3 方法的副本,他们确实会尝试更改该副本。

它们只能用于更改命名空间中对象的值,而不能用于创建新对象。

例子

getFromNamespace("findGeneric", "utils")
## Not run: 
fixInNamespace("predict.ppr", "stats")
stats:::predict.ppr
getS3method("predict", "ppr")
## alternatively
fixInNamespace("predict.ppr", pos = 3)
fixInNamespace("predict.ppr", pos = "package:stats")

## End(Not run)

也可以看看

get , fix , getS3method

相关用法


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