आप किसी भी गैर सामान्य समारोह का अपहरण कर सकते हैं, यह (S3) सामान्य बनाने के लिए और मूल संस्करण सेट डिफ़ॉल्ट संस्करण होने के लिए। उदाहरण के लिए:
## make an S3 generic for sd
sd <- function(x, ...) UseMethod("sd")
## take the usual definition of sd,
## and set it to be the default method
sd.default <- stats::sd
## create a method for our class "foo"
sd.foo = function(x, ...) print("Hi")
एक अंतिम कदम है, अगर यह एक पैकेज में है, है sd.default
करने के लिए एक ...
तर्क जोड़ने के लिए पैकेज की जांच के गुजर अनुमति देने के लिए:
formals(sd.default) <- c(formals(sd.default), alist(... =))
दे रही है:
> args(sd.default)
function (x, na.rm = FALSE, ...)
NULL
> args(stats::sd)
function (x, na.rm = FALSE)
NULL
यह वांछित व्यवहार देता है:
> bar <- 1:10
> sd(bar)
[1] 3.027650
> class(bar) <- "foo"
> sd(bar)
[1] "Hi"
इस लेखन आर एक्सटेंशन मैनुअल
स्रोत
2011-01-18 23:26:48
आर-डेवेल ईमेल करने के लिए बेहतर है और अनुरोध है कि 'sd' (या बेहतर, 'var') सामान्य बनाया जाए। – hadley
@ हैडली सहमत हुए, लेकिन साथ ही आर कोर को बनाए रखने की आवश्यकता के साथ, कुछ सामान्य बनाने के दौरान प्रदर्शन प्रदर्शन हुआ, इसलिए आर एक्स में शब्द और सलाह। मैनुअल। –
मैं उन बहाने नहीं खरीदता हूं। जेनेरिक और var नहीं क्यों मतलब चाहिए? – hadley