Re: [Rd] parse(text=...) and the srcfile attribute

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Fri, 13 Jul 2007 06:52:26 -0400

On 12/07/2007 10:10 PM, Deepayan Sarkar wrote:

> On 7/12/07, Gabor Grothendieck <ggrothendieck_at_gmail.com> wrote:

>> You can do this:
>>
>>> foo_at_srcfile$lines
>> [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 <deepayan.sarkar@gmail.com> 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_at_r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
> 
> ______________________________________________
> R-devel_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Fri 13 Jul 2007 - 10:57:04 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 13 Jul 2007 - 11:36:20 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.