我正在开发一个包,我希望在其中向对象添加编辑历史记录。该包允许其他包注册用于编辑对象的函数。我正在寻找一种方法来记录注册用于编辑的函数的包的版本。
问题是:给定一个函数,如何从导出的位置获取包?我的想法是调查它的搜索路径,但是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
is “在搜索路径上可见,注册为 S3 方法或在命名空间中但未导出。”
结果是一个命名列表,您可以查看可用的内容getAnywhere
with names
names(getAnywhere("str_locate"))
# [1] "name" "objs" "where" "visible" "dups"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)