[Rd] environmentName
Duncan Murdoch
murdoch at stats.uwo.ca
Sun Jan 7 17:23:33 CET 2007
On 1/7/2007 10:01 AM, Gabor Grothendieck wrote:
> One other comment. If I place an attribute on the environment as you
> suggest that changes all uses of the environment.
Yes, that's exactly what you wanted, as far as I can tell. If an
environment prints as
<environment: 0x0181a320>
then all uses of that environment will print the same way.
Duncan Murdoch
I cannot keep the
> original environment intact and have a subobject which represents the
> original environment plus the attribute. This is just one example of why
> the feature discussed in my wishlist is needed (i.e. the ability to have
> the attributes attached to variables rather than to the environment itself).
> The only way to handle this currently is with the list(env = ...) construct
> and attach the name to that but that is a lot of overhead since its means
> that the subobject is not an environment so all environment methods
> need to be replicated rather than inherited/delegated from the superobject
> which really ought to be properly supported.
>
> 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
>> 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.
>>
>> Duncan Murdoch
>>
More information about the R-devel
mailing list