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
symbol name caching bug: attributes get tied to symbol names
4 messages · William Dunlap, Luke Tierney, John Chambers
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
-----Original Message----- From: luke at stat.uiowa.edu [mailto:luke at stat.uiowa.edu] Sent: Friday, March 12, 2010 4:24 PM To: William Dunlap Cc: r-devel at r-project.org Subject: Re: [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.
Thanks Luke, for the explanation. I'm comfortable disallowing attributes on names. The problem arose for me when analyzing a parse tree and I was using attributes to label parts of it. I can stick in a list() layer above the calls, names, etc., to attach the attributes to. That can simplify the syntax also, since things like as.vector() applied to a call object with attributes won't strip the attributes. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com
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
1 day later
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20100314/4ed26d61/attachment.pl>