r - 获取函数的命名空间

标签 r namespaces

我正在开发一个包,我希望在其中向对象添加编辑历史记录。该包允许其他包注册用于编辑对象的功能。我正在寻找一种方法来记录注册用于编辑的函数的包版本。

问题是:给定一个函数,你如何从它导出的地方获取包?我的想法是调查它的搜索路径,但是 search() 只报告当前环境的搜索路径,因此不报告我需要的函数。

非常感谢任何指向其他方法的指针。

获取包的上下文是这样的:

registerFunction <- function(fun) {
  package <- getPackage(fun)  ## This is what I need
  version <- getPackageVersion(package)
  register(fun, package, version)
}

最佳答案

您可以使用 getAnywhere 例如,如果您正在寻找 stringr 函数 str_locate 的命名空间,您可以这样做

getAnywhere("str_locate")$where
# [1] "package:stringr"   "namespace:stringr"

只要 stringr “在搜索路径上可见,注册为 S3 方法或在命名空间中但未导出,这将起作用。”

结果是一个命名列表,您可以通过 names

查看 getAnywhere 中的可用内容
names(getAnywhere("str_locate"))
# [1] "name"    "objs"    "where"   "visible" "dups"  

关于r - 获取函数的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26174703/

相关文章:

java - 如何将具有相同名称和相同 namespace (包名称)的java类导入到一个maven项目中

r - 使用 data.table 获得内存缓存的好方法

r - 将两列合并为一列,在 R 中逐个元素

r - 如何删除字符串中的 "' s"?

C# 找不到类型或命名空间名称

c# - webservice从webMethod参数中删除NameSpace的问题

c++ - using-declaration 不能命名命名空间

c# - 'using Namespace'指令的解释

regex - R/regex with stringi/ICU : why is a '+' considered a non-[:punct:] character?

r - geom_bar 上的定位标签