On 6/10/05, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > On 6/10/05, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > > On 6/10/05, [EMAIL PROTECTED] > > <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > > Is there anyway to preset date formats? I have a date from a cover.dbf > > > that is shown as this: > > > > cover$FINALREPOR > > > [1] "2003-06-24" > > > > > > The numeric value in cover$FINALREPOR is 12227. I'd rather not create > > > another vector to hold the properly formatted date. > > > > > > When I put this in a WordPerfect merge, I want the date to be June 24, > > > 2003. I could take care of the problem in a WordPerfect macro but I'd > > > rather do it as an R default date format if possible. > > > > > > > I am not entirely sure I understand what you are asking but I assume > > you want a Date variable such that print, format and as.character, > > when applied to it, produce default output of a prespecified format. > > > > Although I do not think Date will do that, chron can > > associate a default format with a chron variable. > > > > library(chron) > > > > # custom format for a dates (i.e. chron) object > > my.format <- function(x) format(as.Date(dates(x)), "%B %d %Y") > > > > # test data > > my.Date <- Sys.Date() + 0:9 > > > > # convert to chron and associate my.format to it > > my.chron <- chron(unclass(my.Date), out.format = my.format) > > > > print(my.chron) > > my.chron > > as.character(my.chron) > > format(my.chron) > > > > Note that you can find more information on chron and various > > conversions in my article in RNews 4/1 and especially the table > > at the end of that article. > > > > Here is a different solution that does not involve chron. In this one > we define a subclass of Date called mdy that has a default > format as you specified implemented by defining print, as.character > and format methods for it: > > # define mdy methods > print.mdy <- print.Date > as.character.mdy <- format.mdy <- function(x, format = "%B %d %Y") > format(structure(x, class = "Date"), format = format) > > # test data of class mdy (which is a subclass of Date) > x <- Sys.Date() + 0:9 > class(x) <- c("mdy", "Date") > > # test out print, format and as.character methods for class mdy > print(x) > format(x) > as.character(x) > x >
Actually there was no point in defining print.mdy and as.character.mdy as further examination shows they both operate through format so the above can be simplified to just: format.mdy <- function(x, format = "%B %d %Y") format(structure(x, class = "Date"), format = format) # test data of class mdy (which is a subclass of Date) x <- Sys.Date() + 0:9 class(x) <- c("mdy", "Date") # test out print, format and as.character methods for class mdy print(x) format(x) as.character(x) x ______________________________________________ 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