[Rd] Quoting (was: inline C/C++ in R: question and suggestion

Duncan Murdoch murdoch at stats.uwo.ca
Tue May 22 22:58:43 CEST 2007


On 22/05/2007 4:01 PM, Vladimir Dergachev wrote:
> On Tuesday 22 May 2007 3:52 pm, Duncan Murdoch wrote:
>> On 5/22/2007 1:59 PM, Oleg Sklyar wrote:
>>
>> One suggestion that probably doesn't affect your package:  It would be
>> even nicer if R incorporated something that Duncan Temple Lang suggested
>> last year, namely a new kind of quoting that didn't need escapes in the
>> string.  He suggested borrowing triple quotes from Python; I suggested
>> something more like heredocs as in shells or Perl, or like \verb in TeX,
>> in case you wanted triple quotes in your C function.  It would be nice
>> to settle on something, so that instead of
>>
> 
> I second that. My favorite implementation of this is in Tcl, where curly 
> braces {} mean that the text they enclose is unmodified. Since language 
> constructs using them are normally balanced this is not an impediment.

That wouldn't work in R, because the parser couldn't tell whether

{ a }

was a block of code or a quoted string.


> 
> One extremely useful application of this (aside from long strings) is 
> specifying inline data frames - I don't know how to do this otherwise.
> 
> I.e. something like:
> 
> A<- scan.string({#
> Id Value Mark
> 1	a	3
> 2	b	4
> #	})

When your data doesn't contain quote marks, you can just use regular 
quotes to do that.  I don't know of a scan.string function, but this works:

A <- read.table(textConnection("#
Id Value Mark
1 a 3
2 b 4
#"), head = TRUE)

I think DTL's suggestion would be most useful when putting a lot of code 
in a string, where the escapes make the code harder to read.  For 
example, just about any function using a complicated regular expression.

Duncan Murdoch



More information about the R-devel mailing list