[Rd] environmentName
Gabor Grothendieck
ggrothendieck at gmail.com
Sun Jan 7 12:46:25 CET 2007
On 1/7/07, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> On 1/7/2007 5:01 AM, Gabor Grothendieck wrote:
> > I noticed the new environmentName in R 2.5.0dev. Thus I gather that
> > each environment has:
> >
> > (1) a name
> > (2) a hex value
> >
> > so
> >
> > 1. environmentName gets the name. Is there any way to set the name?
>
> The NEWS entry says:
>
> o New function environmentName() to give the print name of
> environments such as "namespace:base".
> This is now used by str().
>
> Take a look at the implementation in src/main/builtin.c. The name isn't
> part of the environment, this is just derived from how the environment
> is being used.
>
> If you want to attach a label to an environment, use an attribute. You
> can put an S3 class on an environment if you want it to print your label
> by default rather than use the standard print mechanism.
>
> > 2. is there any way to get the hex value for an environment other than doing:
> > e <- new.env()
> > capture.output(e)
>
> Not in R code, but there's no use for it in R code, either. If you want
The proto package currently uses capture.output, as above, to
get a printable unique identifier for environments:
> library(proto)
> name.proto(new.env())
[1] "0x0195860c"
This is used to display the relationships among environment and proto
objects in graph.proto and str.proto .
It would be nice to be able to get the hex identifier directly rather than
having to go through this indirect method.
> to test for whether two variables refer to the same environment, then
> attach a unique label to the environments when you create them and check
> the labels.
Its possible to assign a name to a proto object but I need to be able to
generate an identifier even if the object does not have a name.
More information about the R-devel
mailing list