Skip to content
Prev 390 / 63424 Next

R-alpha: .Options$digits do not (always) work.

Martin Maechler <maechler@stat.math.ethz.ch> writes:
^^^^^^^^^^^
                           on.exit(options(oo))
I'm not sure this is a bug at all, given the scoping rules, etc.
However, things are strange. Consider the following:
[1] 2
[1] 2
[1] 2
[1] 3.141593

The difference is that in the first case, a is in .GlobalEnv, and not
modifiable with "<-" ("<<-" works). Apparently, "$<-" won't
automatically create a copy of a in the current environment which is
what I had expected. Still, creating .Options explicitly in tst()
doesn't work, which fact is probably due to the digits argument in
print.default defaulting to NULL, and print.default has no reason to
look on the frame stack for .Options.

However, changing the print.default definition to

print.default<-function (x, digits = eval(expression(.Options$digits),
sys.frame(sys.parent())), quote = TRUE, na.print = NULL, print.gap = NULL) 
{
        .Internal(print.default(x, digits, quote, na.print, print.gap))
}

*and*

tst<-function (x = pi, dig = 3) 
{
        .Options <- .Options
        .Options$digits <- as.integer(dig)
        print(x)
        x
}


does seem to do what you wanted...