r - 我的类(class)怎么了?

标签 r xts

为什么下面的例子中“我的类(class)”消失了? 如何避免这种情况?

#
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"

最佳答案

编辑:This is fixed在 xts > 0.12.2

现在 Ops.xts() 保留从 xts 继承的对象的类。

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

您还没有为 myclass 定义 + 方法,因此会调度 xts 方法...并且它总是返回一个 xts 类对象(不幸的是)。

您可以通过定义来解决此问题:

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

关于r - 我的类(class)怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12674847/

相关文章:

r - 加速将 200 万行日期字符串转换为 POSIX.ct

r - Xts转换错误(与对象长度不匹配)

r - 使用rollapply函数使用R进行VaR计算

javascript - 在 R 中将 Base64 转换为 PNG/JPEG 文件

r - 局部变量的用法

html - R Shiny Image没有填充/使用css在页面上拉伸(stretch)

r - 将 POSIXct 对象强制转换为 Date 对象

r - 使用 R 从股票数据创建 OHLC 系列

r - 通过 Outlook 在 R 中发送电子邮件

r - R 中用于测试文件是否为 ascii 的 native 方法