R语言如何查询函数所属包 为何不采用package.function调用语法
查询函数所属R包的常用方法
- 方法1:使用
find()函数,直接传入函数名即可返回对应所属包,适用于包已经加载的场景:find("functionY") - 方法2:查看函数的所属环境,加载过的函数可以直接用这个方法:
environment(functionY) - 方法3:打开函数的帮助文档,文档顶部会明确标注所属包,未加载的包只要安装了也能查到:
?functionY # 或者 help("functionY") - 方法4:使用
getAnywhere()函数,不管对应包是否加载,只要安装到本地就能搜索到:getAnywhere("functionY")
为什么R不默认使用包名.函数名的格式调用函数
R脱胎于S语言,最初的核心设计目标是服务于交互式数据分析场景,优先追求代码的简洁性,减少用户交互式操作时的输入成本,因此设计了library()加载包后直接调用函数的机制。
实际上R也支持类似的显式指定包的调用方式,只是语法使用双冒号而非点:你完全可以用packageA::functionY()的格式明确调用指定包下的函数,效果和其他语言的packageA.functionY()完全一致,还能避免不同包同名函数的屏蔽冲突问题。如果需要调用包内未对外导出的内部函数,还可以用三个冒号packageA:::functionY()。
调用library(包名)的时候,R会把这个包的命名空间加入到当前的搜索路径中,调用函数时R会按搜索路径的优先级从上到下匹配第一个同名函数,因此不需要每次都写包名前缀,这种设计非常适合快速探索数据的分析场景。
内容的提问来源于stack exchange,提问作者bernarducs
相关产品推荐
相关产品推荐

