[R] inconsistency between timeSeries and zoo causing a problem with rbind
tolga.uzuner at gmail.com
Sun Nov 16 18:22:19 CET 2008
Many thanks, that is very helpful.
Achim Zeileis wrote:
> On Sun, 16 Nov 2008, Tolga Uzuner wrote:
>> I believe there is a recently introduced inconsistency between
>> timeSeries and zoo which is causing a problem with rbind. I had
>> previously reported that I was having problems with rbind in the
>> following code:
>> bar <- rbind(zoo(0, order.by = index(foo)), bar)
> What happens is the following:
> - There is base:::rbind() and methods:::rbind(). The former is just
> an .Internal() call while the latter additionally does consistency
> checks. The consistency checks require that you can only rbind()
> if the result has a dimension.
> - base:::rbind() is usually found first, even if "methods" is loaded.
> But if you load "timeSeries" this changes and methods:::rbind() is
> found first. I haven't figured out why this happens but it does _not_
> for other S4 packages (such as "Matrix" for example).
> - Thus, if you rbind 1d zoo series, the result is also 1d and has no
> dimension. If "timeSeries" is loaded, methods:::rbind() is called
> which assumes a dimension and fails if there is none.
> What should be done:
> - I'm not sure whether "timeSeries" can be changed so that
> base:::rbind() is still found first.
> - Maybe methods:::rbind() could be made more liberal so that it does
> not fail for 1d return values. Of course, one could argue that a row
> bind only makes sense if there are rows and columns. But, then again,
> maybe it is possible to allow other usages as well.
> - You can work around this as a user of zoo series, by calling c()
> instead of rbind() for 1d series, i.e.,
> c(foo, bar)
> always works with or without "timeSeries" attached. Moreover, c()
> even works for 2d zoo series.
More information about the R-help