Re: [Rd] Creating an environment with attributes in a package

From: Jon Clayden <jon.clayden_at_gmail.com>
Date: Fri, 16 Jul 2010 13:51:39 +0100

On 16 July 2010 13:32, Hadley Wickham <hadley_at_rice.edu> wrote:
> On Fri, Jul 16, 2010 at 2:08 PM, Jon Clayden <jon.clayden@gmail.com> wrote:
>> Dear all,
>>
>> I am trying to create an environment object with additional attributes, viz.
>>
>> Foo <- structure(new.env(), name="Foo")
>>
>> Doing this in a standard session works fine: I get the environment
>> with attr(,"name") set as expected. But if the same code appears
>> inside a package source file, I get just the plain environment with no
>> attributes set. Using a non-environment object works as I would expect
>> within the package (i.e. the attributes remain).
>>
>> I've looked through the documentation for reasons for this, and the
>> only thing I've found is the mention in the language definition that
>> "assigning attributes to an environment can lead to surprises". I'm
>> not sure if this is one of the surprises that the author(s) had in
>> mind! Could someone tell me whether this is expected, please?

>
> You'll be much less surprised if you do:
>
> Foo <- structure(list(new.env()), name="Foo")
>
> Attributes on reference objects are also passed by reference, and
> surprises will result.

Ah, it's good to know the core reason for the "surprises"! Sounds like the best thing is to refactor things as you suggest.

Many thanks for all the responses.

Regards,
Jon



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Fri 16 Jul 2010 - 12:53:48 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 16 Jul 2010 - 17:50:16 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive