William Dunlap
2010-Mar-12 22:52 UTC
[Rd] symbol name caching bug: attributes get tied to symbol names
In R versions 2.10.1 and "2.11.0 Under development (unstable) (2010-03-07 r51225)" on Windows I get the following if I type the commands at the start of the session. Note how the attribute attached to the name "Response" by the initial call to structure() seems to get tied to that name for the remainder of the session: > z <- structure(quote(Response), isResponse=TRUE) > parse(text="Response~Predictor")[[1]][[2]] Response attr(,"isResponse") [1] TRUE > quote(Response~Predictor)[[2]] Response attr(,"isResponse") [1] TRUE > quote(Response) Response attr(,"isResponse") [1] TRUE The attribute actually does go away after quite a while, but I haven't figured out the trigger. rm(z) followed by gc() does not affect it. If I use an unadorned variable called Response before making the structure z, then the isResponse attribute doesn't seem to stick to the name Response. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com
luke at stat.uiowa.edu
2010-Mar-13 00:23 UTC
[Rd] symbol name caching bug: attributes get tied to symbol names
Since symbols/names are reference objects this behavior in unavoidable if we allow attributes to be added to them. On the other hand, I'm not sure it makes sense to allow that. Attempting to set an attribute on NULL signals an error; it would probably make sense to do the same for any name object. luke On Fri, 12 Mar 2010, William Dunlap wrote:> In R versions 2.10.1 and "2.11.0 Under development > (unstable) (2010-03-07 r51225)" on Windows I get the > following if I type the commands at the start of > the session. Note how the attribute attached to > the name "Response" by the initial call to structure() > seems to get tied to that name for the remainder of > the session: > > > z <- structure(quote(Response), isResponse=TRUE) > > parse(text="Response~Predictor")[[1]][[2]] > Response > attr(,"isResponse") > [1] TRUE > > quote(Response~Predictor)[[2]] > Response > attr(,"isResponse") > [1] TRUE > > quote(Response) > Response > attr(,"isResponse") > [1] TRUE > > The attribute actually does go away after quite a > while, but I haven't figured out the trigger. > rm(z) followed by gc() does not affect it. > > If I use an unadorned variable called Response before > making the structure z, then the isResponse attribute > doesn't seem to stick to the name Response. > > > Bill Dunlap > Spotfire, TIBCO Software > wdunlap tibco.com > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Luke Tierney Chair, Statistics and Actuarial Science Ralph E. Wareham Professor of Mathematical Sciences University of Iowa Phone: 319-335-3386 Department of Statistics and Fax: 319-335-3017 Actuarial Science 241 Schaeffer Hall email: luke at stat.uiowa.edu Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu