[Rd] Subsetting time series
    Martin Maechler 
    maechler at stat.math.ethz.ch
       
    Tue Aug 10 10:05:00 CEST 2004
    
    
  
>>>>> "BDR" == Prof Brian Ripley <ripley at stats.ox.ac.uk>
>>>>>     on Tue, 10 Aug 2004 05:47:28 +0100 (BST) writes:
    BDR> On Tue, 10 Aug 2004, Ross Ihaka wrote:
    >> Rob Hyndman wrote:
    >> > When part of a time series is extracted, the time series component is 
    >> > lost. e.g.,
    >> > x <- ts(1:10)
    >> > x[1:4]
    >> > 
    >> > It would be nice if there was a subsetting function [.ts to avoid this 
    >> > problem. However, it is beyond my R-coding ability to produce such a 
    >> > thing.  Is someone willing to do it?
    BDR> There is a [.ts, in src/library/stats/R/ts.R, and it is documented 
    BDR> (?"[.ts").
    >> Have you had a look at "window"?  The problem with "["
    >> its that it can produce non-contiguous sets of values.
    BDR> Yes.
indeed.  window() is what we have been advocation for a long
time now ... (but see below).
    BDR>   If you look in the sources for [.ts you will see,
    BDR> commented, the code that was once there to handle cases
    BDR> where the index was evenly spaced.  But it was removed
    BDR> long ago in favour of window().  I tried to consult the
    BDR> logs, but it seems that in the shift from CVS to SVN
    BDR> recently I can't get at them.  I think the rationale
    BDR> was that x[ind] should always produce an object of the
    BDR> same class.
well, that can't have been the only rationale since now
x[ind] is *not* of the same class - when the "ts" property is
lost in any case.
I don't much like the current behavior of "[.ts" either.
It should either work by returning the "ts" object in the
equidistant case  and give a warning (at least) in the
non-equidistant case.
OTOH, intuitively, when 'ind' has length 1,  x[ind] should just
give a number... [grumble..]
But maybe it's only a very small performance hit when that
continues to carry the "ts" class attribute along.
If we think of the data.frame analogue, we might consider
defining "[[.ts" for extracting numbers and "[.ts" to always
return a time series or an error.
But that is probably too much incompatible to current behavior.
Martin
    
    
More information about the R-devel
mailing list