It looks like summary.data.frame(d) calls format(d[[i]]) for i in seq_len(ncol(d)) and pastes the results together into a "table" object for printing. Hence, write a format.summary.difftime if you want objects of class "summary.difftime" (which I assume summary.difftime produces) to be formatted as you wish when a difftime object is in a data.frame. Once you've written it, have your print.summary.difftime call it too.
E.g., with the following methods summary.difftime <- function(x, ...) { ret <- quantile(x, p=(0:2)/2, na.rm=TRUE) class(ret) <- c("summary.difftime", class(ret)) ret } format.summary.difftime <- function(x, ...) c(Min.Med.Max = paste(collapse="...", NextMethod("format"))) print.summary.difftime <- function(x, ...){ print(format(x), quote=FALSE) ; invisible(x) } I get > d <- data.frame(Num=1:5, Date=as.Date("2012-11-26")+(0:4), > Delta=diff(as.Date("2012-11-26")+2^(0:5))) > summary(d) Num Date Delta Min. :1 Min. :2012-11-26 Min.Med.Max: 1 days... 4 days...16 days 1st Qu.:2 1st Qu.:2012-11-27 Median :3 Median :2012-11-28 Mean :3 Mean :2012-11-28 3rd Qu.:4 3rd Qu.:2012-11-29 Max. :5 Max. :2012-11-30 > summary(d$Delta) Min.Med.Max 1 days... 4 days...16 days My summary.difftime inherits from difftime so the format method is not really needed, as format.difftime does a reasonable job (except that it does not copy the input names to its output). I put it in to show how it gets called. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf > Of Sam Steingold > Sent: Monday, November 26, 2012 2:20 PM > To: r-help@r-project.org; David Winsemius > Subject: Re: [R] printing difftime summary > > > * David Winsemius <qjvafrz...@pbzpnfg.arg> [2012-11-26 08:46:35 -0800]: > > > > On Nov 26, 2012, at 7:14 AM, Sam Steingold wrote: > > > >> summary(infl), where infl$delay is a difftime vector, prints > >> > >> ... > >> > >> delay > >> string:c("492.00 ms", "18.08 min", "1.77 hrs", "8.20 hrs", "8.13 hrs", > >> "6.98 days") > >> secs :c(" 0.5", " 1085.1", " 6370.2", " 29534.4", " 29254.0", > >> "602949.7") > >> > >> > >> > >> instead of something like > >> > >> delay > >> Min.: 492 ms > >> 1st Qu.: 18.08 min > >> > >> &c > >> > >> so, how do I arrange for a proper printing of difftime summary as a > >> part > >> of the data frame summary? > > > > If you like a particular format from an existing print method then why > > not look it up and copy the code? > > > > methods(print) > > the problem is that I cannot figure out which function prints this: > > >> delay > >> string:c("492.00 ms", "18.08 min", "1.77 hrs", "8.20 hrs", "8.13 hrs", > >> "6.98 days") > >> secs :c(" 0.5", " 1085.1", " 6370.2", " 29534.4", " 29254.0", > >> "602949.7") > > I added cat()s to print.summary.difftime and I do not see them, so it > appears that I have no direct control over how a summary.difftime is > printed as a part of a summary of a data.frame. > > > --8<---------------cut here---------------start------------->8--- > summary.difftime <- function (v, ...) { > s <- summary(as.numeric(v), ...) > r <- as.data.frame(sapply(s,difftime2string),stringsAsFactors=FALSE) > names(r) <- c("string") > r[[units(v)]] <- s > class(r) <- c("summary.difftime","data.frame") > invisible(r) > } > print.summary.difftime <- function (sd, ...) { > cat("[[[print.summary.difftime]]]\n") > print(list(...)) > print.data.frame(sd, ...) > } > --8<---------------cut here---------------end--------------->8--- > > -- > Sam Steingold (http://sds.podval.org/) on Ubuntu 12.04 (precise) X > 11.0.11103000 > http://www.childpsy.net/ http://palestinefacts.org http://think-israel.org > http://www.memritv.org http://openvotingconsortium.org http://mideasttruth.com > The force of gravity doubles when acting on a body on a couch. > > ______________________________________________ > 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. ______________________________________________ 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.