Dear R wizards: I am trying (finally) to build a function that might be useful to others. In particular, I want to create a summary.lme (extended lm) method that [a] adds normalized coefficients and [b] white heteroskedasticity adjusted se's and T's. I believe I already know how to do the programming to do these two, at least in simple unweighted cases. Now my challenges are just [1] to trap weird cases (e.g., hccm dies because the standard errors cannot be computed), and [2] to follow "proper R rules and regulations." I started my experiments by copying summary.lm() to summary.lme. But there is some magic that I do not understand. Apparently, the class(ans) <- "summary.lm" signals to R that it should not produce an unlisted summary of the components of ans, but that it should print something that is nicely formatted. example: y=rnorm(5); x=rnorm(5); m=lm(y~x); summary.lm(m); does exactly this nice output. alas, just replacing the name at the end with class(ans) <- "summary.lme" and typing summary.lme(m), having renamed summary.lm to summary, then loses the nice printout. so, it seems to me that somewhere R knows that a "summary.lm" object gets special printing. if I have not misunderstood this, then where and how does this magic happen? advice appreciated. regards, /iaw
Gabor Grothendieck
2007-Jan-01 21:12 UTC
[R] advice on semi-serious attempt to extend summary
Try: methods(print) stats:::print.summary.lm On 1/1/07, ivo welch <ivowel at gmail.com> wrote:> Dear R wizards: > > I am trying (finally) to build a function that might be useful to > others. In particular, I want to create a summary.lme (extended lm) > method that [a] adds normalized coefficients and [b] white > heteroskedasticity adjusted se's and T's. I believe I already know > how to do the programming to do these two, at least in simple > unweighted cases. Now my challenges are just [1] to trap weird cases > (e.g., hccm dies because the standard errors cannot be computed), and > [2] to follow "proper R rules and regulations." > > I started my experiments by copying summary.lm() to summary.lme. But > there is some magic that I do not understand. Apparently, the > class(ans) <- "summary.lm" > signals to R that it should not produce an unlisted summary of the > components of ans, but that it should print something that is nicely > formatted. > example: y=rnorm(5); x=rnorm(5); m=lm(y~x); summary.lm(m); > does exactly this nice output. alas, just replacing the name at the end with > class(ans) <- "summary.lme" > and typing summary.lme(m), having renamed summary.lm to summary, then > loses the nice printout. > > so, it seems to me that somewhere R knows that a "summary.lm" object > gets special printing. if I have not misunderstood this, then where > and how does this magic happen? > > advice appreciated. > > regards, > > /iaw > > ______________________________________________ > R-help at 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 > and provide commented, minimal, self-contained, reproducible code. >