On Oct 3, 2014, at 7:19 AM, Therneau, Terry M., Ph.D. wrote: > I'm a bit puzzled by a certain behavior with dates. (R version 3.1.1) > > > temp1 <- as.Date(1:2, origin="2000/5/3") > > temp1 > [1] "2000-05-04" "2000-05-05" > > > temp2 <- as.POSIXct(temp1) > > temp2 > [1] "2000-05-03 19:00:00 CDT" "2000-05-04 19:00:00 CDT" > > So far so good. On 5/4, midnight in Greenwich it was 19:00 on 5/3 in my time > zone. The manual page has a clear explanation of what goes on. > > > c(temp1, temp2) > [1] "2000-05-04" "2000-05-05" "2623237-10-15" "2623474-05-06" > > class(c(temp1, temp2)) > [1] "Date" > > > c(temp2, temp1) > [1] "2000-05-03 19:00:00 CDT" "2000-05-04 19:00:00 CDT" > [3] "1969-12-31 21:04:41 CST" "1969-12-31 21:04:42 CST" > > class(c(temp2, temp1)) > [1] "POSIXct" "POSIXt" > > I would have expected c() to determine a common class, somehow, then do the > conversion and concatonate. That is obviously not what happens. I've read > the manual page but I must be missing something. I make no claim that R is > broken, mistaken, or otherwise deficient, only that my understanding is so. > > Could someone illuminate?
Followup to my earlier post: It's pretty easy to redefine c.Date and c.POSIXct to behave in hte manner is expected: c.Date <- function (..., recursive = FALSE) structure(c(unlist(lapply(list(...), as.Date))), class = "Date") temp1 <- as.Date(1:2, origin="2000/5/3") temp1 #[1] "2000-05-04" "2000-05-05" temp2 <- as.POSIXct(temp1) c(temp1, temp2) #[1] "2000-05-04" "2000-05-05" "2000-05-04" "2000-05-05" # class(c(temp1, temp2)) #[1] "Date" # c(temp2, temp1) [1] "2000-05-03 17:00:00 PDT" "2000-05-04 17:00:00 PDT" "1969-12-31 19:04:41 PST" [4] "1969-12-31 19:04:42 PST" c.POSIXct <- function (..., recursive = FALSE) .POSIXct(c(unlist(lapply(list(...), as.POSIXct)))) > c(temp1, temp2) [1] "2000-05-04" "2000-05-05" "2000-05-04" "2000-05-05" > class(c(temp1, temp2)) [1] "Date" > c(temp2, temp1) [1] "2000-05-03 17:00:00 PDT" "2000-05-04 17:00:00 PDT" "2000-05-03 17:00:00 PDT" [4] "2000-05-04 17:00:00 PDT" -- David Winsemius Alameda, CA, USA ______________________________________________ R-help@r-project.org 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.