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

Reply via email to