[Rd] seq improperly increments dates (PR#9120)
Martin Maechler
maechler at stat.math.ethz.ch
Fri Aug 4 10:18:47 CEST 2006
>>>>> "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()}
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
[.........]
More information about the R-devel
mailing list