In general R doesn't print the "comment" attribute of an object > structure(1:3, comment=c("a comment", "another comment")) [1] 1 2 3 but if the object is a call it prints it in an unusual format > structure(quote(func(arg)), comment=c("a comment", "another comment")) a comment another comment func(arg) What is the rationale for the special treatment of calls? Bill Dunlap TIBCO Software wdunlap tibco.com [[alternative HTML version deleted]]
Bill, Without being involved in that code at all, it seems that this could be used to (re)create commented source code from R objects. That format seems to correspond directly to a call in a .R file with two comments above it. A bit weird there's no comment character there but I guess thats expected to be in the values of the comment attribute? Anyway, just a guess. Best, ~G On Tue, Nov 12, 2019 at 2:02 PM William Dunlap via R-devel < r-devel at r-project.org> wrote:> In general R doesn't print the "comment" attribute of an object > > structure(1:3, comment=c("a comment", "another comment")) > [1] 1 2 3 > but if the object is a call it prints it in an unusual format > > structure(quote(func(arg)), comment=c("a comment", "another comment")) > a comment > another comment > func(arg) > > What is the rationale for the special treatment of calls? > > Bill Dunlap > TIBCO Software > wdunlap tibco.com > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >[[alternative HTML version deleted]]
On 12/11/2019 5:01 p.m., William Dunlap via R-devel wrote:> In general R doesn't print the "comment" attribute of an object > > structure(1:3, comment=c("a comment", "another comment")) > [1] 1 2 3 > but if the object is a call it prints it in an unusual format > > structure(quote(func(arg)), comment=c("a comment", "another comment")) > a comment > another comment > func(arg) > > What is the rationale for the special treatment of calls?It was there in revision 2 of src/main/deparse.c in 1997. (For those unfamiliar with R history: the current revision of R is 77405. That particular file has been revised 248 times since rev 2.) I suspect either nobody has noticed it before, or nobody had the nerve to touch it. Duncan Murdoch
I suspect that the parser used it to store comments, including the initial "#", before R started using the srcref attribute. (S also stored comments in the parse tree.) Bill Dunlap TIBCO Software wdunlap tibco.com On Tue, Nov 12, 2019 at 4:16 PM Duncan Murdoch <murdoch.duncan at gmail.com> wrote:> On 12/11/2019 5:01 p.m., William Dunlap via R-devel wrote: > > In general R doesn't print the "comment" attribute of an object > > > structure(1:3, comment=c("a comment", "another comment")) > > [1] 1 2 3 > > but if the object is a call it prints it in an unusual format > > > structure(quote(func(arg)), comment=c("a comment", "another > comment")) > > a comment > > another comment > > func(arg) > > > > What is the rationale for the special treatment of calls? > > It was there in revision 2 of src/main/deparse.c in 1997. (For those > unfamiliar with R history: the current revision of R is 77405. That > particular file has been revised 248 times since rev 2.) > > I suspect either nobody has noticed it before, or nobody had the nerve > to touch it. > > Duncan Murdoch >[[alternative HTML version deleted]]
Reasonably Related Threads
- calls with comment attribute
- edit() doubles backslashes when keep.source=TRUE
- file descriptor leak in getSrcLines in R 2.10.0 svn 48590
- formula(model.frame(y~.^2, data=d)) does not return formula from terms attribute of the model.frame
- identical(..., ignore.environment=TRUE)