2015-10-26 39 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"的功能。