On 12/07/2007 10:10 PM, Deepayan Sarkar wrote: > On 7/12/07, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: >> You can do this: >> >>> [EMAIL PROTECTED] >> [1] "\na <- 1; b <- 2**2\na + b\n" >> >>> # or this >>> as.character(foo) >> [1] "a <- 1" "b <- 2^2" "a + b" > > Neither of which is what I want. I want > >> sapply(attr(foo, "srcref"), as.character) > [1] "a <- 1" "b <- 2**2" "a + b" > > but was hoping for a better way than this.
I don't think there is one. The code for print(foo) is deep within the deparser, and it never generates the things you want individually, they're just part of what gets generated when it deparses foo. (One reason for this design is that foo has a srcref attribute, its elements don't, because the elements of an expression are not necessarily things that can sensibly have attributes.) So your one-liner is probably the best way to get what you want. Duncan Murdoch > -Deepayan > >> On 7/12/07, Deepayan Sarkar <[EMAIL PROTECTED]> wrote: >>> Hi, >>> >>> I'm trying to understand whether the new source file references can >>> help me with something I want to do. Let's say I have >>> >>> foo <- parse(text = " >>> a <- 1; b <- 2**2 >>> a + b >>> ") >>> >>> I now wish to recover the sources for the parsed expressions. I can >>> get them one at a time: >>> >>>> foo[[2]] >>> b <- 2^2 >>>> as.character(attr(foo, "srcref")[[2]]) >>> [1] "b <- 2**2" >>> >>> Is there a better way? Perhaps like the print method >>> >>>> as.character(foo, useSource = TRUE) >>> could give all the sources at once? >>> >>> -Deepayan >>> >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel