R 查看包中是否存在变量/函数?
我试图测试包中是否存在特定的变量或函数。例如,假设我想测试名为R 查看包中是否存在变量/函数?,r,R,我试图测试包中是否存在特定的变量或函数。例如,假设我想测试名为plot的函数是否存在于包“graphics”中 以下测试函数plot是否存在,但不测试它来自哪个包: exists('plot', mode='function') 或者我可以测试graphics包中是否存在名为plot的东西,但这不能告诉我它是否是一个函数: 'plot' %in% ls('package:graphics') 有没有一个好方法可以问“在模式Z的包Y中是否存在一个名为X的对象”(基本上,我可以将存在限制为特定的
plot
的函数是否存在于包“graphics”中
以下测试函数plot
是否存在,但不测试它来自哪个包:
exists('plot', mode='function')
或者我可以测试graphics
包中是否存在名为plot
的东西,但这不能告诉我它是否是一个函数:
'plot' %in% ls('package:graphics')
有没有一个好方法可以问“在模式Z的包Y中是否存在一个名为X的对象”(基本上,我可以将存在限制为特定的包吗?)
(是的,我可以将以上两行结合起来,首先测试plot
是否在graphics
中,然后询问plot
的模式,但是如果我有自己的函数plot
屏蔽graphics::plot
,那么我可以相信的输出存在('plot',mode='function')
)
背景:为我的一个包编写测试,并希望测试各种函数是否被导出。我正在使用packagetestthat
,它在一个环境中执行测试,在这个环境中,我可以看到包的所有内部函数,并且被exists('myfunction',mode='function')
刺痛,返回true,但实际上我忘记了导出myfunction
。我想测试各种功能是否被导出。哦,我找到了
我注意到在?ls
中,它说第一个参数(“package:graphics”
对我来说)也算作一个环境存在
“其中
参数与ls
”名称
参数具有相同的文档,因此我猜'package:graphics'
可能也适用于此:
exists('plot', where='package:graphics', mode='function')
[1] TRUE # huzzah!
环境(绘图)
查找(“+”)
#[1] “包:基本”
查找('绘图')
#[1] “软件包:图形”
查找('plot',mode=“function”)
#[1] “软件包:图形”
这与此+1有关,但这不适用于内部函数。:,i、 eexists('parse_-formula',where='package:restrape2',mode='function')
getFromNamespace('parse_-formula',ns='restrape2')
是的,我特别不想要内部函数……哦,我知道我在我的问题中说的是“exists”,我的意思是“exports”!oops@agstudy存在('parse_formula',where=asNamespace('reforme2'),mode='function')
@hadley ok:)(我很确定看到这样的评论)谢谢!环境在这里有点像是在转移视线——这是绘图
创建的环境,而不是找到它的地方。我想如果函数是泛型的,那么它肯定是在这里。如果它不是通用的,那么它不会告诉用户将首先在哪里搜索任何调用吗?请注意,plot
的环境是namespace:graphics
,但它可以在package:graphics
中找到-这些是不同的环境。在(搜索函数环境)中有更多的细节,这应该非常有用。我看到你对这一资源的开发进展顺利。特别是,我曾多次尝试提高我“用语言计算”的能力,但发现各种资源在理解我的心理模型方面无效。我认为你耐心地解释这一点可能比我咨询过的其他人更有效。我正在完成函数式编程章节,下一步要扩展和重写的是语言计算。
environment(plot)
<environment: namespace:graphics>
find('+')
#[1] "package:base"
find('plot')
#[1] "package:graphics"
find('plot', mode="function")
#[1] "package:graphics"