【发布时间】:2015-10-18 21:16:16
【问题描述】:
我可以检查我的环境中是否存在一个函数:
> exists("is.zoo")
[1] FALSE
我可以通过加载一个包来检查一个函数是否存在:
> library(zoo)
> exists("is.zoo")
[1] TRUE
但是如何在不加载包的情况下检查包中是否存在函数?
> exists("zoo::is.zoo")
[1] FALSE
【问题讨论】:
-
我相信你需要查看包源。您通常可以在 NAMESPACE 文件中轻松找到导出的函数,但通常您也应该在包的文档中找到它们。否则你需要检查实际的源文件。
-
我需要能够以编程方式进行检查。
-
为什么需要以编程方式检查这个?
-
您可以通过编写一个加载库、检查函数、然后卸载库并返回存在值的函数来作弊。
-
目前不在一台装有 R 的机器上,因此无法测试,但也许使用
:::运算符搜索 NAMESPACE 可能涵盖大多数情况。