我创建了一个包含许多函数的包,这些函数使用句点来分隔单词。例如,我有名为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)