[R] seq.POSIXt() with short time intervals
Don MacQueen
macq at llnl.gov
Tue Mar 26 17:17:57 CET 2002
I was surprised when seq.POSIXt() returned a single value rather than
a vector, from inputs that I thought were reasonable. Here's an
example to illustrate:
> t0 <- ISOdatetime(2002,6,24,0,0,10)
## expected a sequence of 16 times 1 second apart
> seq.POSIXt(from=t0,to=t0+15,by='1 sec')
[1] "2002-06-24 00:00:10 PDT"
## traces to this call
> seq.default(1024902010,1024902025,by=1)
[1] 1024902010
>
## which is due to the following expressions in seq.default()
del <- to - from
## a few lines omitted
dd <- abs(del)/max(abs(to), abs(from))
if (dd < sqrt(.Machine$double.eps)) return(from)
This looks like a trap to catch bad input, and return something
reasonable (or at least not crash).
It's a given that seq.default() pre-dates seq.POSIXt() by many years,
and the test for relative range undoubtedly has good reasons, so it's
probably not a good idea to change seq.default().
There's nothing inherently wrong with such a time sequence, and in
fact, if t0 = ISOdatetime(1970,6,24,0,0,10) instead, seq.POSIXt()
does return a vector.
I'd like to see seq.POSIXt() return a full sequence in such cases,
regardless of the starting point, so what I'll do is think about it,
and see if I can't come up with a good way to modify seq.POSIXt() to
do that. In the meantime, I'm interested in any comments or
suggestions anyone might have.
Turns out that with the base time, t0, as above, t0+15 is right at
the threshold of the relative range test:
## compare with t0=t0+16
## this call returns what was expected
> seq.POSIXt(from=t0, to=t0+16, by='1 sec')
[1] "2002-06-24 00:00:10 PDT" "2002-06-24 00:00:11 PDT" "2002-06-24
00:00:12 PDT" "2002-06-24 00:00:13 PDT"
[5] "2002-06-24 00:00:14 PDT" "2002-06-24 00:00:15 PDT" "2002-06-24
00:00:16 PDT" "2002-06-24 00:00:17 PDT"
[9] "2002-06-24 00:00:18 PDT" "2002-06-24 00:00:19 PDT" "2002-06-24
00:00:20 PDT" "2002-06-24 00:00:21 PDT"
[13] "2002-06-24 00:00:22 PDT" "2002-06-24 00:00:23 PDT" "2002-06-24
00:00:24 PDT" "2002-06-24 00:00:25 PDT"
[17] "2002-06-24 00:00:26 PDT"
I've found this on two platforms:
> version
_
platform sparc-sun-solaris2.7
arch sparc
os solaris2.7
system sparc, solaris2.7
status
major 1
minor 4.1
year 2002
month 01
day 30
language R
platform powerpc-apple-darwin5.3
arch powerpc
os darwin5.3
system powerpc, darwin5.3
status
major 1
minor 4.1 (also 4.0)
year 2001
month 12
day 19
language R
--
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA
--------------------------------------
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help 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-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list