printing difftime summary
On Mon, Nov 26, 2012 at 4:46 PM, David Winsemius <dwinsemius at comcast.net> wrote:
On Nov 26, 2012, at 7:14 AM, Sam Steingold wrote:
this overcomes the summary generation, but not printing:
--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("data.frame","summary.difftime")
Surely reversed no? summary.difftime inherits from data.frame I would have assumed.
r } print.summary.difftime <- function (sd) print.data.frame(sd)
What is this supposed to do exactly? If you have inheritance why have the subclass method do nothing other than call the parent method? Michael
--8<---------------cut here---------------end--------------->8---
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) -- David.
* David Winsemius <qjvafrzvhf at pbzpnfg.arg> [2012-11-25 00:50:51 -0800]: On Nov 24, 2012, at 7:48 PM, Sam Steingold wrote:
* David Winsemius <qjvafrzvhf at pbzpnfg.arg> [2012-11-23 13:14:17 -0800]:
--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("data.frame","summary.difftime")
r
}
print.summary.difftime <- function (sd) print.data.frame(sd)
--8<---------------cut here---------------end--------------->8---
it appears to work for a single vector:
--8<---------------cut here---------------start------------->8---
r1 <- summary(infl$delay) r1
string secs
Min. 492.00 ms 0.5
1st Qu. 18.08 min 1085.0
Median 1.77 hrs 6370.0
Mean 8.20 hrs 29530.0
3rd Qu. 8.12 hrs 29250.0
Max. 6.98 days 602900.0
str(r1)
Classes 'summary.difftime' and 'data.frame': 6 obs. of 2 variables: $ string: chr "492.00 ms" "18.08 min" "1.77 hrs" "8.20 hrs" ... $ secs :Classes 'summaryDefault', 'table' num [1:6] 4.92e-01 1.08e+03 6.37e+03 2.95e+04 2.92e+04 ... --8<---------------cut here---------------end--------------->8--- but not as a part of data frame: --8<---------------cut here---------------start------------->8---
a <- summary(infl)
Error in summary.difftime(X[[22L]], ...) : unused argument(s) (maxsum = 7, digits = 12) --8<---------------cut here---------------end--------------->8--- I guess I should somehow accept a list of options in summary.difftime() and pass them on to the inner call to summary() (or should it be explicitly summary.numeric()?)
In the usual way. If you know that the function will be called with arguments from the summary.data.frame function then you should allow the argument list to accept them. You can ignore them or provide provisions for them. You just can't define your function to have only one argument if you expect (as you should since you passes summary a dataframe object) that it might be called within summary.data.frame. This is the argument list for summary.data.frame:
summary.data.frame
function (object, maxsum = 7, digits = max(3, getOption("digits") -
3), ...)
how do I do that?
summary.difftime <- function (v, ... ) { ................
There are many asked and answered questions on rhelp about how to deal
with the "dots" arguments.
-- Sam Steingold (http://sds.podval.org/) on Ubuntu 12.04 (precise) X 11.0.11103000 http://www.childpsy.net/ http://www.memritv.org http://memri.org http://honestreporting.com http://dhimmi.com http://openvotingconsortium.org People with a good taste are especially appreciated by cannibals.
David Winsemius, MD Alameda, CA, USA
______________________________________________ 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.