Hi all,
I'm working with summary.gam() and noticed that the options()$width
argument is ignored by some components of that function, in particular
the formula, which is printed at an arbitrary length regardless of the
desired width.
I've tracked the problem back to print.formula(), so at a lower level
than summary.gam(). Is there a way around this that I'm missing?
library(mgcv)
# start with example from ?gam
set.seed(2) ## simulate some data...
dat <- gamSim(1,n=400,dist="normal",scale=2)
colnames(dat)[1:5] <- c("reallylongnamey", "reallylongnamex0",
"reallylongnamex1", "reallylongnamex2", "reallylongnamex3")
b <- gam(reallylongnamey~s(reallylongnamex0)+s(reallylongnamex1)+s(reallylongnamex2)+s(reallylongnamex3),data=dat)
options(width=20)
b$formula # not wrapped to 20 characters
options(width=150)
b$formula # the formula is wrapped even though it fits in the specified width
# also true for lm()
b <- lm(reallylongnamey~reallylongnamex0+reallylongnamex1+reallylongnamex2+reallylongnamex3,data=dat)
options(width=20)
b$call
options(width=150)
b$call
Thanks,
Sarah
--
Sarah Goslee
http://www.functionaldiversity.org
options()$width ignored by print.formula
4 messages · Sarah Goslee, Brian Ripley
On 06/11/2012 17:01, Sarah Goslee wrote:
Hi all, I'm working with summary.gam() and noticed that the options()$width argument is ignored by some components of that function, in particular the formula, which is printed at an arbitrary length regardless of the desired width. I've tracked the problem back to print.formula(), so at a lower level than summary.gam(). Is there a way around this that I'm missing?
Use deparse(): print() on a language type uses (at C level) deparse with
the default width.cutoff of 60. E.g. (subject to vagaries of mailers)
> form <-
reallylongnamey~reallylongnamex0+reallylongnamex1+reallylongnamex2+reallylongnamex3
> form
reallylongnamey ~ reallylongnamex0 + reallylongnamex1 + reallylongnamex2 +
reallylongnamex3
> deparse(form, 150)
[1] "reallylongnamey ~ reallylongnamex0 + reallylongnamex1 +
reallylongnamex2 + reallylongnamex3"
I am not sure this is something we would want to make depend on
getOption("width"), but it might merit a separate option.
library(mgcv)
# start with example from ?gam
set.seed(2) ## simulate some data...
dat <- gamSim(1,n=400,dist="normal",scale=2)
colnames(dat)[1:5] <- c("reallylongnamey", "reallylongnamex0",
"reallylongnamex1", "reallylongnamex2", "reallylongnamex3")
b <- gam(reallylongnamey~s(reallylongnamex0)+s(reallylongnamex1)+s(reallylongnamex2)+s(reallylongnamex3),data=dat)
options(width=20)
b$formula # not wrapped to 20 characters
options(width=150)
b$formula # the formula is wrapped even though it fits in the specified width
# also true for lm()
b <- lm(reallylongnamey~reallylongnamex0+reallylongnamex1+reallylongnamex2+reallylongnamex3,data=dat)
options(width=20)
b$call
options(width=150)
b$call
Thanks,
Sarah
--
Sarah Goslee
http://www.functionaldiversity.org
______________________________________________ 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.
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
Thanks, Prof. Ripley.
Using deparse(b$formula, width.cutoff = options()$width) works as I'd
expected (full example below). So I can use that to write a custom
summary.gam(), though that still seems like a lot of work to get
summary(b) to follow the usual R output conventions.
Sarah
library(mgcv)
# start with example from ?gam
set.seed(2) ## simulate some data...
dat <- gamSim(1,n=400,dist="normal",scale=2)
colnames(dat)[1:5] <- c("reallylongnamey", "reallylongnamex0",
"reallylongnamex1", "reallylongnamex2", "reallylongnamex3")
b <- gam(reallylongnamey~s(reallylongnamex0)+s(reallylongnamex1)+s(reallylongnamex2)+s(reallylongnamex3),data=dat)
options(width=20)
deparse(b$formula, width.cutoff = options()$width) # not wrapped to 20
characters
options(width=150)
deparse(b$formula, width.cutoff = options()$width) # the formula is
wrapped even though it fits in the specified width
On Tue, Nov 6, 2012 at 12:37 PM, Prof Brian Ripley
<ripley at stats.ox.ac.uk> wrote:
On 06/11/2012 17:01, Sarah Goslee wrote:
Hi all, I'm working with summary.gam() and noticed that the options()$width argument is ignored by some components of that function, in particular the formula, which is printed at an arbitrary length regardless of the desired width. I've tracked the problem back to print.formula(), so at a lower level than summary.gam(). Is there a way around this that I'm missing?
Use deparse(): print() on a language type uses (at C level) deparse with the default width.cutoff of 60. E.g. (subject to vagaries of mailers)
form <- reallylongnamey~reallylongnamex0+reallylongnamex1+reallylongnamex2+reallylongnamex3 form
reallylongnamey ~ reallylongnamex0 + reallylongnamex1 + reallylongnamex2 +
reallylongnamex3
deparse(form, 150)
[1] "reallylongnamey ~ reallylongnamex0 + reallylongnamex1 +
reallylongnamex2 + reallylongnamex3"
I am not sure this is something we would want to make depend on
getOption("width"), but it might merit a separate option.
library(mgcv)
# start with example from ?gam
set.seed(2) ## simulate some data...
dat <- gamSim(1,n=400,dist="normal",scale=2)
colnames(dat)[1:5] <- c("reallylongnamey", "reallylongnamex0",
"reallylongnamex1", "reallylongnamex2", "reallylongnamex3")
b <-
gam(reallylongnamey~s(reallylongnamex0)+s(reallylongnamex1)+s(reallylongnamex2)+s(reallylongnamex3),data=dat)
options(width=20)
b$formula # not wrapped to 20 characters
options(width=150)
b$formula # the formula is wrapped even though it fits in the specified
width
# also true for lm()
b <-
lm(reallylongnamey~reallylongnamex0+reallylongnamex1+reallylongnamex2+reallylongnamex3,data=dat)
options(width=20)
b$call
options(width=150)
b$call
Thanks,
Sarah
-- Sarah Goslee http://www.functionaldiversity.org
On 06/11/2012 17:54, Sarah Goslee wrote:
Thanks, Prof. Ripley. Using deparse(b$formula, width.cutoff = options()$width) works as I'd expected (full example below). So I can use that to write a custom summary.gam(), though that still seems like a lot of work to get summary(b) to follow the usual R output conventions.
I think you are misreading the documentation. ?options says
?width?: controls the maximum number of columns on a line used in
printing vectors, matrices and arrays, and when filling by
?cat?.
Columns are normally the same as characters except in CJK
languages.
Nothing abut language objects there (nor the output from cat(),
frequently used in print() methods without a 'fill' argument).
Contrast that with deparsing expressions, when 'width.cutoff' is a lower
rather than upper bound, and is in bytes (not characters nor columns).
As I said, I can see a case from allowing the default cutoff used by
print() to be under user control, but it would need to be a different
option from 'width' since it is not even in the same units.
Sarah
library(mgcv)
# start with example from ?gam
set.seed(2) ## simulate some data...
dat <- gamSim(1,n=400,dist="normal",scale=2)
colnames(dat)[1:5] <- c("reallylongnamey", "reallylongnamex0",
"reallylongnamex1", "reallylongnamex2", "reallylongnamex3")
b <- gam(reallylongnamey~s(reallylongnamex0)+s(reallylongnamex1)+s(reallylongnamex2)+s(reallylongnamex3),data=dat)
options(width=20)
deparse(b$formula, width.cutoff = options()$width) # not wrapped to 20
characters
options(width=150)
deparse(b$formula, width.cutoff = options()$width) # the formula is
wrapped even though it fits in the specified width
On Tue, Nov 6, 2012 at 12:37 PM, Prof Brian Ripley
<ripley at stats.ox.ac.uk> wrote:
On 06/11/2012 17:01, Sarah Goslee wrote:
Hi all, I'm working with summary.gam() and noticed that the options()$width argument is ignored by some components of that function, in particular the formula, which is printed at an arbitrary length regardless of the desired width. I've tracked the problem back to print.formula(), so at a lower level than summary.gam(). Is there a way around this that I'm missing?
Use deparse(): print() on a language type uses (at C level) deparse with the default width.cutoff of 60. E.g. (subject to vagaries of mailers)
form <- reallylongnamey~reallylongnamex0+reallylongnamex1+reallylongnamex2+reallylongnamex3 form
reallylongnamey ~ reallylongnamex0 + reallylongnamex1 + reallylongnamex2 +
reallylongnamex3
deparse(form, 150)
[1] "reallylongnamey ~ reallylongnamex0 + reallylongnamex1 +
reallylongnamex2 + reallylongnamex3"
I am not sure this is something we would want to make depend on
getOption("width"), but it might merit a separate option.
library(mgcv)
# start with example from ?gam
set.seed(2) ## simulate some data...
dat <- gamSim(1,n=400,dist="normal",scale=2)
colnames(dat)[1:5] <- c("reallylongnamey", "reallylongnamex0",
"reallylongnamex1", "reallylongnamex2", "reallylongnamex3")
b <-
gam(reallylongnamey~s(reallylongnamex0)+s(reallylongnamex1)+s(reallylongnamex2)+s(reallylongnamex3),data=dat)
options(width=20)
b$formula # not wrapped to 20 characters
options(width=150)
b$formula # the formula is wrapped even though it fits in the specified
width
# also true for lm()
b <-
lm(reallylongnamey~reallylongnamex0+reallylongnamex1+reallylongnamex2+reallylongnamex3,data=dat)
options(width=20)
b$call
options(width=150)
b$call
Thanks,
Sarah
-- Sarah Goslee http://www.functionaldiversity.org
______________________________________________ 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.
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595