在(R)S3中,function.class.class的用途是什么?

在(R)S3中,function.class.class的用途是什么?,r,R,在S3风格的OOP中,写为foo.a的函数名用于调用类a的方法foo 但最近我遇到了写为function.class.class foo.A.B <- function(x){ ##--- } foo.A.B(发布答案以结束问题) 正如@joran指出的,函数fortify.MSM.lm实际上只是fortify函数用于MSM.lm类型的对象的一种方法。这里使用句号没有隐含的继承权。在大多数情况下,R中的句点与命名变量的任何其他字符一样;它在其他语言中的意义不同。如您所见,少数例外之一是S

在S3风格的OOP中,写为
foo.a
的函数名用于调用类a的方法foo 但最近我遇到了写为
function.class.class

foo.A.B <- function(x){
##---
}
foo.A.B(发布答案以结束问题)

正如@joran指出的,函数
fortify.MSM.lm
实际上只是
fortify
函数用于
MSM.lm
类型的对象的一种方法。这里使用句号没有隐含的继承权。在大多数情况下,R中的句点与命名变量的任何其他字符一样;它在其他语言中的意义不同。如您所见,少数例外之一是S3泛型函数的命名方法

所以你可以定义

my.fun <- function(x, ...) UseMethod("my.fun")
my.fun.data.frame <- function(x, ...) summary(x)
my.fun(mtcars)

my.fun您能说出实际函数的名称吗(如果它在一个包中,是哪个包)?下面是一个例子:这有点让人困惑,但我相信在这种情况下S3类实际上是
MSM.lm
。我必须检查文档中的细节,但我怀疑S3会将第一个
之后的所有内容都视为对象类。例如,否则它会被有意义的
function.data.frame
混淆。来自Python背景的“.”使事情有点混乱。我认为在'foo.A.B'中为类B创建了'foo'方法,其中类B必须从类'A'继承。我想我是在互相渗透。值得注意的是,这很可怕,这样做的人应该被枪杀(呃,我的意思是,强烈谴责)。R中的规则很简单:点是为S3保留的,使用下划线(
\uu
)来分隔函数名或类名中的单词。并使用一致的资本化。错误:
fortify.MSM.lm
。好:
fortify.msm\u lm