Ben Bolker <bolker <at> ufl.edu> writes: > > In the Sweave output for summary for several types > > of model objects and also for the comparison of models > > with anova, I find that that the display of the call(s) > > or formula does not obey the width option, even with > > keep.source=TRUE set, so that a long formula will overshoot > > the margins in the document. I would like to know if > > there is a good way to correct that. Looking at the > > print.summary methods for lm, glm and several others, > > I see that a construct like deparse(obj$call) is used > > to generate the text. The deparse function takes a > > "width.cutoff" argument, that could be used in these cases, > > if it were possible to pass a value to it, or if its default > > value could be set with an option. Other methods do not > > use deparse, (print.summary.polr in MASS uses dput and > > anovalist.nls also does it differently) so such a solution > > would not work universally without altering these functions. > > > > Here is a toy example that illustrates the overshoot of the formula > > > > \documentclass[12pt]{article} > > \usepackage{geometry} > > \geometry{left=2in,right=2in} > > \begin{document} > > <<keep.source=TRUE>>= > > op <- options(width = 65, digits = 3) > > ddataframe <- data.frame(AAAAA = 1:10, > > BBBBB = factor(letters[1:2]), > > CCCCC = factor(LETTERS[1:5]), > > SSSSS = factor(paste("S", 1:10, sep = "")), > > RRRRR = rnorm(10)) > > > > mod1 <- lm(RRRRR ~ AAAAA + BBBBB + CCCCC + SSSSS, > > ddataframe) > > summary(mod1) > > @ > > \end{document} > > A quick guess: try keep.source=TRUE and format your commands > as you would like to see them appear ... > > Ben Bolker Thanks, Ben, for the response.
As you can see, in the example above, I did use keep.source=TRUE. I can always format it by hand in the final document, but I was looking for an automatic formating solution, if it was something obvious or not that I have missed. It seems to me that the problem is in print.summary and anova methods. For lm and glm, they use deparse(obj$call). deparse takes a width.cutoff argument, which is set by default to 60L, but you can't access it directly from the summary or anova arguments. It's a bit heavy-handed, but a solution is to change the default value of width.cutoff in base, using assignInNamespace. Making my own deparse in the workspace doesn't work because the base functions don't see it. Other methods don't necessarily use deparse. I've seen a few that use dput(), which doesn't have a width argument, so I'm losing hope of finding a general, automatic solution. Thanks, in any case. Ken ______________________________________________ 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.