2
在R中,如何實現運算符重載(如+
,-
,*
,./
)爲一個新類?我檢查了動物園圖書館的源代碼,在ops.R
。下面的代碼是否可以完成這項工作?R:運算符重載和動物園對象中的Ops.zoo
Ops.zoo <- function (e1, e2)
{
e <- if (missing(e2)) {
NextMethod(.Generic)
}
else if (any(nchar(.Method) == 0)) {
NextMethod(.Generic)
}
else {
merge(e1, e2, all = FALSE, retclass = NULL)
NextMethod(.Generic)
}
out <- if (is.null(attr(e, "index")))
zoo(e, index(e1), attr(e1, "frequency"))
else
e
# the next statement is a workaround for a bu g in R
structure(out, class = class(out))
}
我迷失在merge(e1,e2,..)
區塊。我
e1 <- zoo(rnorm(5), as.Date(paste(2003, 02, c(1, 3, 7, 9, 14), sep = "-")))
e2 <- e1
test <- merge(e1, e2, all = FALSE, retclass = NULL)
測試,但隨後test
是NULL
。 e <- {test; NextMethod(.Generic)}
如何工作?
你可以檢查'?Ops'。這和S3方法應該給你一個爲什麼這個工程的處理。 – 2011-05-30 14:58:17
@ Nick,謝謝。我想我需要研究merge.zoo(reclass = NULL)如何完全理解這一點。 – ahala 2011-05-30 15:33:21
是否有一個原因集中在'動物園'? (見下面的答案)。你是否有特定的需要遵循'Ops.zoo'的格式,或者這只是你能找到的例子? – 2011-05-30 20:01:17