[R] R: ts - objects (PR#228)

Martyn Plummer plummer@iarc.fr
Thu, 15 Jul 1999 15:03:56 +0200 (CEST)


> Marcus Eger <marcus.eger@physik.uni-marburg.de> writes:
>> 
>> -----------------------------------------------------------------------------
>> 3. Another problem had to do with the value of delta and/or start:
>> -----------------------------------------------------------------------------
>> > time(ts(c(1,2,3,4),start=3,delta=1.5))
>> Error: invalid start
> 
> or just: 
> 
>> ts(c(1,2,3,4),start=3,delta=1.5)
> Time Series:
> Start = c(3, 1) 
> End = c(7, 1) 
> Frequency = 0.666666666666667 
> Error: invalid start
> 
> ..which is pretty darn weird! CC'ed to R-bugs.

That's just the print method for ts objects calling
time().

The underlying problem is in start().
> start(x)
[1] 3 1

I think the 2-vector form of start and end only makes sense when the
frequency is an integer. If I am right then the following versions of
start.ts and end.ts (which check that tsp[3] is an integer) should solve
the problem.

M.

"start.ts" <- function (x) 
{
    ts.eps <- .Options$ts.eps
    ##if(is.null(ts.eps)) ts.eps <- 1.e-5
    tsp <- attr(as.ts(x), "tsp")
    is <- tsp[1] * tsp[3]
    if (abs(tsp[3] - round(tsp[3])) < ts.eps && abs(is - round(is)) < 
        ts.eps) {
        is <- floor(tsp[1])
        fs <- floor(tsp[3] * (tsp[1] - is) + 0.001)
        c(is, fs + 1)
    }
    else tsp[1]
}

"end.ts" <- function(x)
{
    ts.eps <- .Options$ts.eps
    ## if(is.null(ts.eps)) ts.eps <- 1.e-5
    tsp <- attr(as.ts(x), "tsp")
    is <- tsp[2] * tsp[3]
    if (abs(tsp[3] - round(tsp[3])) < ts.eps && abs(is - round(is)) < 
        ts.eps) {
        is <- floor(tsp[2])
        fs <- floor(tsp[3] * (tsp[2] - is) + 0.001)
        c(is, fs + 1)
    }
    else tsp[2]
}

M.
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._