Mitch76
Mitch76

Reputation: 89

rollapply and xts does not work in the new version of xts

If I run this simple code:

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

In the new version of xts (0.9-3), I get:

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

While in the old xts (0.8-6) runs smoothly.

Seems it is related with the option width. As in the vignette of rollapply, "width can be a list regarded as offsets compared to the current time". In the new version this cannot be possible.

Any workaround? Is there a possibility to call rollapply in a different way, in order to achieve the old behaviour?

Upvotes: 2

Views: 1154

Answers (1)

Joshua Ulrich
Joshua Ulrich

Reputation: 176718

rollapply.xts wasn't registered as an S3 method until version 0.8-9. That's why this worked for you previously. Since there wasn't an xts S3 method, rollapply.zoo would have been dispatched, which would have returned a zoo object (not an xts object).

rollapply.xts currently does not support width=list(...), but you can get the same results you did previously by converting your xts object to a zoo object before calling rollapply.

rollapply(as.zoo(my_xts), list(seq(-2, 0)), sum, partial = 1)

Upvotes: 1

Related Questions