[Rd] Large discrepancies in the same object being saved to .RData
Martin Maechler
maechler at stat.math.ethz.ch
Mon Jul 12 11:48:46 CEST 2010
>>>>> "DM" == Duncan Murdoch <murdoch.duncan at gmail.com>
>>>>> on Sun, 11 Jul 2010 17:25:45 -0400 writes:
DM> On 11/07/2010 1:30 PM, Prof Brian Ripley wrote:
[........................]
>>> On 7/10/2010 10:10 PM, Bill.Venables at csiro.au wrote:
>>>> Well, I have answered one of my questions below. The hidden
>>>> environment is attached to the 'terms' component of v1.
>> Well, not really hidden. A terms component is a formula
>> (see ?terms.object), and a formula has an environment
>> just as a closure does. In neither case does the print()
>> method tell you about it -- but ?formula does.
DM> I've just changed the default print method for formulas to display the
DM> environment if it is not globalenv(), which is the rule used for
DM> closures as well. So now in R-devel:
>> as.formula("y ~ x")
DM> y ~ x
DM> as before, but
>> as.formula("y ~ x", env=new.env())
DM> y ~ x
DM> <environment: 01f83400>
I see that our print.formula() actually has not truely fulfilled
our own rule about print methods:
?print has
> Description:
>
> ‘print’ prints its argument and returns it _invisibly_
> ..........
Further, I completely agree that it's good to mention the
environment, however, it can be a nuisance when it's part of a
larger print(.) method, so I'd like allowing to suppress that
and hence I've committed the current
print.formula <- function(x, showEnv = !identical(e, .GlobalEnv), ...)
{
e <- environment(.x <- x) ## return(.) original x
attr(x, ".Environment") <- NULL
print.default(unclass(x), ...)
if (showEnv) print(e)
invisible(.x)
}
--
Martin Maechler, ETH Zurich
More information about the R-devel
mailing list