R语言 我的课怎么了?

w6lpcovy  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(109)

为什么“myclass”在下面的例子中消失了?如何避免?

#
library(xts)

# sample data
fo <- "%Y-%m-%d %X"
st <- Sys.time()
delta <- seq(from=0, by=10, length.out=10)
ma1 <- matrix(data=sin(delta/50), ncol=1, nrow=10)
ma2 <- matrix(data=sin(delta/25), ncol=1, nrow=10)
d1a <- xts(x=ma1, order.by=strptime(st, format=fo) + delta)
d2a <- xts(x=ma2, order.by=strptime(st, format=fo) + delta)
d1b <- xts(x=ma1, order.by=strptime(st, format=fo) + delta)
d2b <- xts(x=ma2, order.by=strptime(st, format=fo) + delta)
d1c <- xts(x=ma1, order.by=strptime(st, format=fo) + delta)
d2c <- xts(x=ma2, order.by=strptime(st, format=fo) + delta)

# original class
class(d1a)
class(d2a)
#
d3a <- d1a + d2a

# class
class(d1b) <- "myclass"
class(d2b) <- "myclass"
#
d3b <- d1b + d2b

# class
class(d1c) <- c("myclass","xts","zoo")
class(d2c) <- c("myclass","xts","zoo")
#
d3c <- d1c + d2c

#
class(d3a)
[1] "xts" "zoo"
class(d3b)
[1] "myclass"
class(d3c)
[1] "xts" "zoo" # expected was "myclass" "xts" "zoo"
2hh7jdfx

2hh7jdfx1#

编辑:xts中的This is fixed〉0.12.2
现在Ops.xts()保留了从xts继承的对象的类。

class(d3c)
[1] "myclass" "xts"     "zoo"

您还没有为myclass定义+方法,因此xts方法被调度......并且它总是返回一个xts类对象(不幸的是)。
您可以通过定义以下内容来解决此问题:

Ops.myclass <- xts:::Ops.xts

相关问题