包函数设置为S3方法而不是通用函数

时间:2016-07-29 17:19:48

标签: r

我创建了一个包含许多函数的包,这些函数使用句点来分隔单词。例如,我有名为collapse.chapters()update.files()create.title()的函数。

但是,当我创建包时,有些报告为S3方法(在NAMESPACE中,S3method(collapse,chapters)),而其他报告为通用函数(export(create.title))。因此,我可以在附加包时没有问题地致电create.title(),但我无法直接致电collapse.chapters()。如果我直接调用它,R返回,

  

错误:找不到函数'collapse.chapters',“

虽然我可以使用packagename:::collapse.chapters()来调用它。

有没有办法确保函数不是作为S3方法创建的?

一个非常相似的问题was asked before,但答案并不完全清楚,我的结果略有不同。根据这些答案,我的猜测是R将某些函数中的句点解释为对象属性的指示。创建的S3方法的完整列表是

S3method(collapse,chapters)
S3method(collapse,content)
S3method(collapse,definition)
S3method(collapse,html)
S3method(collapse,methods)
S3method(collapse,multicontent)
S3method(collapse,page)
S3method(collapse,section)
S3method(collapse,summary)
S3method(collapse,tags)
S3method(collapse,term)
S3method(collapse,terms)
S3method(update,files)
S3method(update,index)
S3method(start,notation)

0 个答案:

没有答案