Re: [R] Date formats

From: Mikkel Grum <mi2kelgrum_at_yahoo.com>
Date: Sun, 30 Dec 2007 11:07:12 -0800 (PST)


Thanks to both of you. I tried to work on it, but the closest I could get was:

lifelse <- function (test, y, z) {

    iffy <- function(x) {

        if (x) {y} else {z}
    }
    lapply(test, iffy)
}

> lifelse(c(TRUE, FALSE), date -1, date)
[[1]]
[1] "2007-12-29"

[[2]]
[1] "2007-12-30"

>
> d <- as.Date(c("1994-3-4", "1996-3-1"))
> lifelse(d > "1996-1-1", "1996-1-1", d)
[[1]]
[1] "1994-03-04" "1996-03-01"

[[2]]
[1] "1996-1-1"

> lifelse(d <= "1996-1-1", d, "1996-1-1")
[[1]]
[1] "1994-03-04" "1996-03-01"

[[2]]
[1] "1996-1-1"

Any attempts to unlist, paste, etc. to remove the list structure converted/removed the Date class.

Mikkel

 Gabor Grothendieck wrote:
> Read the warning in ?ifelse

Yep.

And, yes, it is annoying that ifelse() strips attributes, including class, but it is one of those things that have been in the S languages "forever", and nobody really wants to mess with. The fundamental issue is that you need the result to be able to hold values from both of the "yes" and the "no" arguments and there is no guarantee that that is possible outside of the R base types.

You'd like to have things like these "work"

d <- as.Date(c("1994-3-4", "1996-3-1"))

ifelse(d > "1996-1-1", "1996-1-1", d)

ifelse(d <= "1996-1-1", d, "1996-1-1")

in the sense that the result is a Date object, but once you start thinking about the details of how it _might_ work, you find that things aren't all that simple. If there was a general mechanism for coercion between classes, then maybe it could be done, but there isn't any.

-- 
   O__  ---- Peter Dalgaard             ุster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45)  35327918
~~~~~~~~~~ - (p.dalgaard_at_biostat.ku.dk)                  FAX: (+45)  35327907



      ____________________________________________________________________________________
Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ 


______________________________________________
R-help_at_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.
Received on Sun 30 Dec 2007 - 19:11:13 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sun 30 Dec 2007 - 20:30:21 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.