मान लें कि मेरे पास testClass
नामक एक एस 4 कक्षा है। सामग्री इस प्रश्न का उद्देश्य अप्रासंगिक है लेकिन चलिए इसे एक संख्यात्मक मान बनाते हैं।ऑब्जेक्ट के विपरीत लेने के लिए एस 4 विधि को कैसे परिभाषित किया जाए?
#' An S4 class that stores a list.
#' @export
setClass("testClass",
representation(a="numeric"))
मैं किसी विधि को परिभाषित करना चाहता हूं जो किसी ऑब्जेक्ट के विपरीत लेने जैसा काम करता है। उदाहरण के लिए:
vec <- rnorm(10)
-vec
मुझे लगा कि यह पहला तर्क लापता के साथ एक Arith
विधि की घोषणा की जाएगी।
#' @export
setMethod("Arith", c(e1="missing", e2="testClass"),
function(e1, e2)
{
op = .Generic[[1]]
switch(op,
`-` = return([email protected])
)
}
)
हालांकि, जब मैं विधि मैं निम्नलिखित त्रुटि मिलती है लागू करने का प्रयास:
tc <- new("testClass", a=2)
-tc
Error in -tc : invalid argument to unary operator
अच्छा डेमो। जिज्ञासा से बाहर, वह '.Generic' कहां से आता है (यानी इसका मूल्य कहां पाया जा सकता है)? –
'? जेनररिक 'कुछ स्क्रॉलिंग के बाद उत्पन्न होता है:' 'जेनरिक' जेनेरिक फ़ंक्शन नामकरण एक लम्बाई वाला एक वर्ण वेक्टर है। – thothal
यदि आप 'setMethod (" - ", c (e1 =" testClass' ", ई 2 =" गायब "), फ़ंक्शन (ई 1, ई 2) -ई 1 @ ए)'? – nicola