[Rd] str() resets class for environments

Henrik Bengtsson hb at maths.lth.se
Wed Nov 24 07:36:05 CET 2004

> -----Original Message-----
> From: r-devel-bounces at stat.math.ethz.ch 
> [mailto:r-devel-bounces at stat.math.ethz.ch] On Behalf Of 
> Mark.Bravington at csiro.au
> Sent: Wednesday, November 24, 2004 1:43 AM
> To: hb at maths.lth.se
> Cc: r-devel at stat.math.ethz.ch
> Subject: RE: [Rd] str() resets class for environments
> Henrik Bengtsson wrote:
> > Should attr()<-, attributes()<-,
> > class()<- give an error when applied to an environment? I see
> > no reason why
> > not.
> It would break the workspace-organization code in the 
> 'mvbutils' package, which relies on being able to set and 
> unset attributes of environments on the search path 
> (specifically, the 'name' and 'path' attributes).
> So personally I'd much prefer not to have this happen! For 
> the wider R community, I'm not sure how many users the 
> 'mvbutils' package has, but I think it's a fair number 
> judging from emails I get. 
> If you do feel the extra security is vitally important, 
> perhaps there could be 'lock.attributes' and 
> 'unlock.attributes' functions for environments. The idea 
> would be that each environment has an invisible (i.e. 
> internal) mock-attribute "locked", which would be TRUE by 
> default (on creation of the environment). While "locked" is 
> TRUE, any attempt to muck about with the environment's 
> attributes would cause an error. But if you really did need 
> to change attributes of that , it would still be possible by 
> calling 'unlock.attributes' first.

Then I agree with you that it should not be made defunct; in general, if
there is a rational for using a feature in R and if someone relies on it,
then I believe one should be careful and consider alternatives before
removing it. I hope I did not break your code now by bringing it up to the R
core team.

I am curious though, do you not run into problems by setting and getting
attributes on environment in 'mvbutils'? The example of John Chambers I
re-posted, which shows that attributes can (will?) get "killed by operating
on the [environment] object "locally" in a function", suggests that you


> Mark
> *******************************
> Mark Bravington
> PO Box 1538
> Castray Esplanade
> Hobart
> TAS 7001
> phone (61) 3 6232 5118
> fax (61) 3 6232 5012
> Mark.Bravington at csiro.au
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list 
> https://stat.ethz.ch/mailman/listinfo/r-devel

More information about the R-devel mailing list