Arrays of POSIXlt dates always return a length of 9. This is correct (they're really lists of vectors of seconds, hours, and so forth), but other methods disguise them as flat vectors, giving superficially surprising behaviour:
strings <- paste('2009-1-', 1:31, sep='') dates <- strptime(strings, format="%Y-%m-%d") print(dates) # [1] "2009-01-01" "2009-01-02" "2009-01-03" "2009-01-04" "2009-01-05" # [6] "2009-01-06" "2009-01-07" "2009-01-08" "2009-01-09" "2009-01-10" # [11] "2009-01-11" "2009-01-12" "2009-01-13" "2009-01-14" "2009-01-15" # [16] "2009-01-16" "2009-01-17" "2009-01-18" "2009-01-19" "2009-01-20" # [21] "2009-01-21" "2009-01-22" "2009-01-23" "2009-01-24" "2009-01-25" # [26] "2009-01-26" "2009-01-27" "2009-01-28" "2009-01-29" "2009-01-30" # [31] "2009-01-31" print(length(dates)) # [1] 9 str(dates) # POSIXlt[1:9], format: "2009-01-01" "2009-01-02" "2009-01-03" "2009-01-04" ... print(dates[20]) # [1] "2009-01-20" print(length(dates[20])) # [1] 9 I've since realised that POSIXct makes date vectors easier, but could we also have something like: length.POSIXlt <- function(x) { length(x$sec) } in datetime.R, to avoid breaking functions (like the str.POSIXt method) which use length() in this way? Thanks, Mark <>< ------ Version: platform = i686-pc-linux-gnu arch = i686 os = linux-gnu system = i686, linux-gnu status = major = 2 minor = 10.0 year = 2009 month = 10 day = 26 svn rev = 50208 language = R version.string = R version 2.10.0 (2009-10-26) Locale: C Search Path: .GlobalEnv, package:stats, package:graphics, package:grDevices, package:utils, package:datasets, package:methods, Autoloads, package:base ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel