由Venables和Ripley編寫的「統計與計算」一書有一個例子,用於定義泛型函數Math的類「多項式」對象的方法函數。數學是一組函數,其中包括一些組件函數,包括abs,acos,acosh,...瞭解R中的函數switch()?
下面是本書中提到的用於定義組函數Math函數的代碼(請注意,代碼是用於S4類
setMethod("Math", "polynomial",
function(x) {
switch(.Generic, ceiling = , floor = ,
trunc = polynomial(callGeneric([email protected]), rat = [email protected]),
stop(paste(.Generic, "not allowed on polynomials"))
)}
)
據我所知,與使用setMethod(),我們定義爲泛型函數的數學方法函數時,它被稱爲類「多項式」的對象:(新風格的R/S級))。你能解釋一下這裏有什麼開關嗎?我讀了開關將R幫助,但還是很難理解下面的部分:
switch(.Generic, ceiling = , floor = ,
trunc = polynomial(callGeneric([email protected]), rat = [email protected]),
stop(paste(.Generic, "not allowed on polynomials"))
)}
注意,上面的多項式函數是一個構造函數來創建類「多項式」的對象。
我很感激@MvG。你的回答非常有幫助。 – Sam 2012-08-07 01:29:09
有人低估了這個答案,是否有特殊原因這樣做?我犯的任何錯誤?我很感激評論。 – MvG 2012-08-07 06:30:39
我實際上給出了兩個答案+1,既然你的答案指向了我的兩個主要問題(.Generic&=),我給了你「接受的答案」。 – Sam 2012-08-07 13:47:05