[R] Noob question re: writing while loops on one line

Duncan Murdoch murdoch.duncan at gmail.com
Sun Feb 15 21:19:16 CET 2015


On 15/02/2015 11:20 AM, John McKown wrote:
> On Sun, Feb 15, 2015 at 9:54 AM, Duncan Murdoch
> <murdoch.duncan at gmail.com <mailto:murdoch.duncan at gmail.com>>wrote:
> 
>     On 15/02/2015 10:08 AM, Sun Shine wrote:
>     > Thanks John: understanding it as a line return makes sense!
> 
>     But it's not right.  This is one statement, and it returns the value 3:
> 
>     1 +
>     2
> 
>     This is an error:
> 
>     1 + ; 2
> 
>     The semicolon is a statement separator, not a line return.
> 
> 
> ​Technically speaking a semicolon is a statement terminator, not a
> statement separator. In the case of the R language, that is a "nit". In
> the case of Pascal, it is a big difference.
>  
> 
> 
>     Duncan Murdoch
> 
> 
> ​This is one reason why I _always_ use the semi-colon. It is _never_
> really wrong to do so. It may be _unnecessary_ in some case. It is also
> why I always use <- as the assignment operator (well, that and because I
> like it from my APL background). If there are two ways to express
> something, and one of them is _always_ correct whereas the other _might
> not_ be correct in some cases, then I think doing the former is simply
> "better form". But, then, I'm anal about other things to. And that
> doesn't apply to interactive use. I don't terminate my interactive
> statements with a semi-colon all the time. Just most of the time. Of
> course, I'm a touch typist too and so it is not really much of a problem
> for me.​

I don't use semicolons unless they are necessary, and I don't like it
when my students do.  For example, you could be misled by code like this:

x = 1;
y = 2;
verylongname = x + y
    + 1;

If this were C, verylongname would end up with the value 4.  If you read
it and only see 3 "terminators", you might think R is the same, but it's
not.  R sees that as 7 different statements:  two on the 1st, 2nd and
4th lines (in each case the second statement is empty), and one
statement on line 3.  So verylongname ends up with the value 3, not 4.

Cues to remind you what language you're using are a good thing.  That's
one reason to use <- (which I always do) instead of =, and not to use
unnecessary semicolons.

Duncan Murdoch

>  
> 
> 
> -- 
> He's about as useful as a wax frying pan.
> 
> 10 to the 12th power microphones = 1 Megaphone
> 
> Maranatha! <><
> John McKown



More information about the R-help mailing list