R:运算符重载和Zoo对象中的Ops.zoo

问题描述

| 在R中,如何为新类实现运算符重载(如
+
-
*
./
)?我在
ops.R
中检查了动物园图书馆的源代码。以下代码能完成这项工作吗?
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))
}
我在ѭ6街区迷路了。我用
 e1 <- zoo(rnorm(5),as.Date(paste(2003,02,c(1,3,7,9,14),sep = \"-\")))
 e2 <- e1
 test <- merge(e1,retclass = NULL)
但是then8ѭ就是
NULL
。 ѭ10的工作原理是什么?     

解决方法

        我认为您可能正在看一个比必要的例子更复杂的例子。似乎值得阅读
?Ops
(如上面的评论者所述),但是对于基本示例,您可以很容易地做到这一点:
> `+.mychar` <- function(e1,e2) paste(e1,e2)
> x <- \"a\"
> y <- \"b\"
> class(x) <- \"mychar\"
> x+y
[1] \"a b\"
如果一些简单的事情不满足您的需求,我建议(除了
?Ops
)看看一个更简单的示例,例如
`+.Date`
(注意向后单引号)     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...