[R] Google style

Duncan Murdoch murdoch at stats.uwo.ca
Tue Sep 1 14:02:57 CEST 2009


On 9/1/2009 6:37 AM, (Ted Harding) wrote:
> On 01-Sep-09 10:25:53, Duncan Murdoch wrote:
>> Jim Lemon wrote:
>>> Duncan Murdoch wrote:
>>>> On 8/31/2009 11:50 AM, Mark Knecht wrote:
>>>>> On Mon, Aug 31, 2009 at 6:36 AM, Terry Therneau<therneau at mayo.edu> 
>>>>> wrote:
>>>>> <SNIP>
>>>>>> The authors borrowed so much else from C, the semicolon would have
>>>>>> been good too.
>>>>>>         
>>> Something I have thought myself.
>>>   
>>>>> I know real R coders will chuckle
>>>>>       
>>>> I'd say cringe, rather than chuckle.  This is going to make you waste
>>>> a lot of time some day, when you stare and stare at code like Terry's
>>>> and can't figure out what's wrong with it:
>>>>
>>>>     zed <- function(x,y,z) {
>>>>            x + y
>>>>                  +z;
>>>>           }
>>>>
>>>> The value of the function is +z, not x+y+z, even though the C part of
>>>> your brain made you type it that way and reads it as one statement in
>>>> the body, not two.
>>>>     
>>> This is getting interesting. One habit I have developed in R to 
>>> emphasize a line continuation is to always write the above as:
>>>
>>> zed<-function(x,y,z) {
>>>  x+y+
>>>  z
>>> }
>>>   
>> 
>> That's a good habit.  An alternative is to put parentheses around the 
>> expression:
>> 
>>      (x + y
>>           + z)
>> 
>> will work.
>>> The trailing operator signalling to me and the interpreter that
>>> there's more to come. A semicolon after the z would be innocuous.
>>> Now I know that this marks me as a crabby old fart who learned
>>> to program on Hollerith cards where there had to be firm
>>> conventions on when a line of code ended. Still, given the moiety
>>> of global warming attributable to endless discussions about how
>>> many spaces should be used for indentation, I think the use of
>>> the semicolon as a personal aid to interpretation is at worst a
>>> harmless affectation.
>> 
>> I think it's worse.  To me, it's like putting in a comment that is 
>> wrong, or writing code like this:
>> 
>>   one <- 2
>>   x <- x + one
>> 
>> Code has meaning, it's not just a bunch of binary instructions to the 
>> computer.  If the meaning and the look of the code clash, it is going
>> to lead to problems.
>> 
>> Duncan Murdoch
> 
> And surely that is precisely the point of Jim's use of ";"!
> It is, in effect, ignored by R; but to Jim it means "This marks the
> end of a command." Surely useful, and surely not in the same league
> as "a comment that is wrong". You may see it as noise, but then
> you can filter it out.

I think you're missing the point.  Using C-like syntax in R is 
misleading because you will think it has C-like meaning.  You will read

  x + y
    + z;

as one statement, not two. (Actually you could argue that in R there are 
three statements there, but the third one is empty).

This is harmful in the same way using misleading variable names is 
harmful:  as long as you're paying attention you'll get it right, but 
when you are working on a hard problem and can't devote enough neurons 
to this particular task, you'll get it wrong, and have a hard-to-spot 
bug in your code.  You'll decide you need to split a statement across 
two lines, and write it in C style like the statements above, instead of 
in correct R syntax.

Duncan Murdoch

> 
> As one COF to another, I have to say that Jim's posting took me
> back to the early days of my own evolution. That was dandy!
> (Dinosaurs are not dead yet).
> 
> Ted.
> 
> --------------------------------------------------------------------
> E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
> Fax-to-email: +44 (0)870 094 0861
> Date: 01-Sep-09                                       Time: 11:37:52
> ------------------------------ XFMail ------------------------------
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list