[Rd] seq improperly increments dates (PR#9120)

Duncan Murdoch murdoch at stats.uwo.ca
Fri Aug 4 14:06:20 CEST 2006


On 8/4/2006 4:18 AM, Martin Maechler wrote:
>>>>>> "Gabor" == Gabor Grothendieck <ggrothendieck at gmail.com>
>>>>>>     on Thu, 3 Aug 2006 20:14:24 -0400 writes:
> 
>     Gabor> That's, in fact, the way seq.dates works in the chron package:
>     Gabor> library(chron)
>     Gabor> x <- chron("01/31/2006")
>     Gabor> seq(x, by = "month", length = 2)   #  01/31/06 02/28/06
> 
> Hmm, so, by "logic",
> 2006-01-31 + 1month  |->  2006-02-28
> 2006-01-30 + 1month  |->  2006-02-27 (?)
> 2006-01-29 + 1month  |->  2006-02-26 (?)
> 2006-01-28 + 1month  |->  2006-02-25  ????????
> 
> I really don't like 'chron's behavior which seems much less
> logical to me than what R does with the official "Date" objects :
> 
>> options(width=88)
>> for(d in 28:31) print(seq(as.Date(paste("2006-01", d, sep="-")), len = 6, by="1 month"))
> [1] "2006-01-28" "2006-02-28" "2006-03-28" "2006-04-28" "2006-05-28" "2006-06-28"
> [1] "2006-01-29" "2006-03-01" "2006-03-29" "2006-04-29" "2006-05-29" "2006-06-29"
> [1] "2006-01-30" "2006-03-02" "2006-03-30" "2006-04-30" "2006-05-30" "2006-06-30"
> [1] "2006-01-31" "2006-03-03" "2006-03-31" "2006-05-01" "2006-05-31" "2006-07-01"
> 
> {which, BTW, *is* reproducible code; the bug report was only
>  reproducible on the day it was posted because it sillily used
>  Sys.date()}

I think the obvious solution here is to ask R Core to move the earth 
slightly closer to the sun, so the year is exactly 360 days long, and 
these problems don't arise.

Or perhaps exactly 372 days would be better; that would be further from 
the sun and would also help with global warming.

Duncan Murdoch

> 
>     Gabor> See the help desk article in R News 4/1 for more about the main
>     Gabor> date classes.
> 
>     Gabor> On 8/3/06, Ponzio, Stephen [CIB-LAVA] <stephen.ponzio at citigroup.com> wrote:
>     >> You're right, it's tricky.
>     >> 
>     >> I guess I would expect Jan. 30 + 1 month = Feb. 28.
>     >> 
>     >> Of couse, then  Jan. 30 + 1 month = Jan. 28 + 1 month;
>     >> I understand.
>     >> 
>     >> Being that "1 month" is imprecise in terms of number of days,
>     >> this anomaly is preferable to skipping months (Jan. 30 + 1 month = March 2),
>     >> in my opinion.
>     >> 
>     >> That is what I expected, anyway.
>     >> 
>     >> Thanks,
>     >> Stephen
> 
>    [.........]
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list