Just one more comment. It is possible to define length.POSIXlt yourself in which case diff works with POSIXlt objects.
> length.POSIXlt <- function(x) length(x[[1]]) > diff(dts) Time differences of 91, 92, 183, 91, 92, 182, 91, 92, 182 days On 7/23/06, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > Moving this to r-devel. > > Looking at the diff.POSIXt code we see the problem is that it takes the > length of the input using length which is wrong since in the case > of POSIXlt the length is always 9 (or maybe length should be > defined differently for POSIXlt?). Try this which gives the same > problem: > > dts[-1] - dts[-length(dts)] > > We get a more sensible answer if length is calculated correctly: > > dts[-1] - dts[-length(dts[[1]])] > > > On 7/23/06, Patrick Giraudoux <[EMAIL PROTECTED]> wrote: > > > Try converting to POSIXct: > > That's what I did finally (see the previous e-mail). > > > > dts<-c("15/4/2003","15/7/2003","15/10/2003","15/04/2004","15/07/2004","15/10/2004","15/4/2005","15/07/2005","15/10/2005","15/4/2006") > > > > dts <- as.POSIXct(strptime(dts, "%d/%m/%Y")) > > diff(dts) > > > > Time differences of 91, 92, 183, 91, 92, 182, 91, 92, 182 days > > > > > What is the problem you are trying to solve? > > Actually, I don't understand why using diff() and POSIXct provides the > > expected result and not using POSIXlt. Both POSIXct and POSIXlt are of > > class POSIXt. The doc of diff() stresses that <'diff' is a generic > > function with a default method and ones for classes '"ts"', '"POSIXt"' > > and '"Date"'>. It does not mention differences between POSIXct and POSIXlt. > > > > Moreover, using diff() with POSIXlt has provided (wrong) numbers... and > > not an error. This may be difficult to detect sometimes along programme > > lines. Must one keep in mind that diff() is reliably applicable only on > > POSIXct? In this case, should not it bve mentionned in the documentation? > > > > All the best, > > > > Patrick > > > > > > > > > > > > > > > > jim holtman a écrit : > > > Try converting to POSIXct: > > > > > > > str(dts) > > > 'POSIXlt', format: chr [1:10] "2003-04-15" "2003-07-15" "2003-10-15" > > > "2004-04-15" "2004-07-15" "2004-10-15" "2005-04-15" ... > > > > dts > > > [1] "2003-04-15" "2003-07-15" "2003-10-15" "2004-04-15" "2004-07-15" > > > "2004-10-15" "2005-04-15" "2005-07-15" > > > [9] "2005-10-15" "2006-04-15" > > > > dts <- as.POSIXct(dts) > > > > dts > > > [1] "2003-04-15 EDT" "2003-07-15 EDT" "2003-10-15 EDT" "2004-04-15 > > > EDT" "2004-07-15 EDT" "2004-10-15 EDT" > > > [7] "2005-04-15 EDT" "2005-07-15 EDT" "2005-10-15 EDT" "2006-04-15 EDT" > > > > diff(dts) > > > Time differences of 91, 92, 183, 91, 92, 182, 91, 92, 182 days > > > > > > > > > > > > > > > > On 7/23/06, *Patrick Giraudoux* <[EMAIL PROTECTED] > > > <mailto:[EMAIL PROTECTED]>> wrote: > > > > > > Dear Listers, > > > > > > I have encountered a strange problem using diff() and POSIXt: > > > > > > > > > dts<-c("15/4/2003","15/7/2003","15/10/2003","15/04/2004","15/07/2004","15/10/2004","15/4/2005","15/07/2005","15/10/2005","15/4/2006") > > > > > > dts <- strptime(dts, "%d/%m/%Y") > > > class(dts) > > > > > > [1] "POSIXt" "POSIXlt" > > > > > > diff(dts) > > > > > > Time differences of 7862400, 7948800, 15811200, 7862400, 7948800, > > > 15724800, 7862400, 7948800, 0 secs > > > > > > In this case the result is not the one expected: expressed in seconds > > > and not in days, and the difference between the two last dates is > > > not 0. > > > > > > Now, if one use a vector of 9 dates only (whatever the date removed), > > > things come well: > > > > > > diff(dts[-1]) > > > > > > Time differences of 92, 183, 91, 92, 182, 91, 92, 182 days > > > > > > Also if one contrains dts to POSIXct > > > > > > > > > dts<-c("15/4/2003","15/7/2003","15/10/2003","15/04/2004","15/07/2004","15/10/2004","15/4/2005","15/07/2005","15/10/2005","15/4/2006") > > > > > > dts <- as.POSIXct(strptime(dts, "%d/%m/%Y")) > > > diff(dts) > > > > > > Time differences of 91, 92, 183, 91, 92, 182, 91, 92, 182 days > > > > > > Any rational in that? > > > > > > Patrick > > > > > > ______________________________________________ > > > R-help@stat.math.ethz.ch <mailto:R-help@stat.math.ethz.ch> mailing > > > list > > > https://stat.ethz.ch/mailman/listinfo/r-help > > > PLEASE do read the posting guide > > > http://www.R-project.org/posting-guide.html > > > and provide commented, minimal, self-contained, reproducible code. > > > > > > > > > > > > > > > -- > > > Jim Holtman > > > Cincinnati, OH > > > +1 513 646 9390 > > > > > > What is the problem you are trying to solve? > > > > [[alternative HTML version deleted]] > > > > > > > > ______________________________________________ > > R-help@stat.math.ethz.ch mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > > > > > > ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.