2015-10-26 26 views
1

在S3样式的OOP中,函数名称为foo.A用于调用方法foo对于类A
但最近我在函数来写成function.class.class,function.class.class有什么用?

foo.A.B <- function(x){ 
##--- 
} 

这是什么样的功能呢?

+0

你可以命名实际功能(如果它在一个包中,哪个包)? – joran

+0

这里是一个例子:https://github.com/sinhrks/ggfortify/blob/master/R/fortify_MSwM.R –

+2

这有点令人困惑,但我相信在这种情况下S3类实际上是'MSM.lm'。我必须去查看文档中的细节,但是我怀疑S3会在第一个'。。'之后处理所有的东西作为对象类。例如,否则它会被'function.data.frame'弄糊涂。 – joran

回答

3

(如过帐答案收出的问题)

正如@joran指出的,功能fortify.MSM.lm实际上只是为fortify函数MSM.lm类型的对象的方法。在这里使用这段时间并没有暗示的流行病。在大多数情况下,R中的时间段与命名变量的任何其他字符一样;它与其他语言没有相同的意义。正如您已经看到的,少数例外之一是S3通用函数的命名方法。

所以你可以在名称my.fun.data.frame定义

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

左右。这些时间段并不意味着什么,只是当您拨打data.frame的电话号码my.fun时,R会寻找名为"my.fun" + "." + "data.frame"的功能。