2

如果我运行这个简单的代码:

my_xts <- .xts(1:10*1,1:10)
rollapply(my_xts, list(seq(-2, 0)), sum, partial = 1)

在新版本的 xts (0.9-3) 中,我得到:

Error in rollapply.xts(my_xts, list(seq(-2, 0)), sum, partial = 1) : 
(list) object cannot be coerced to type 'integer'
In addition: Warning message:
In rollapply.xts(my_xts, list(seq(-2, 0)), sum, partial = 1) :
partial argument is not currently supported

而在旧的 xts (0.8-6) 中运行平稳。

似乎它与选项宽度有关。就像在 的小插图中一样rollapply,“宽度可以是一个列表,与当前时间相比被视为偏移量”。在新版本中这是不可能的。

任何解决方法?是否有可能以rollapply不同的方式调用,以实现旧的行为?

4

1 回答 1

1

rollapply.xts直到版本 0.8-9 才注册为 S3 方法。这就是为什么这对你以前有用。由于没有 xts S3 方法,rollapply.zoo因此会被分派,这将返回一个 zoo 对象(不是 xts 对象)。

rollapply.xts目前不支持width=list(...),但您可以通过在调用之前将 xts 对象转换为 zoo 对象来获得与之前相同的结果rollapply

rollapply(as.zoo(my_xts), list(seq(-2, 0)), sum, partial = 1)
于 2013-01-29T14:40:55.953 回答