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<thern...@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.hard...@manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 01-Sep-09                                       Time: 11:37:52
------------------------------ XFMail ------------------------------

______________________________________________
R-help@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.

______________________________________________
R-help@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.

Reply via email to