[R] Multiple line commands in R scripting

Duncan Murdoch murdoch at stats.uwo.ca
Sun Oct 25 14:13:16 CET 2009


On 25/10/2009 8:53 AM, Neil Stewart wrote:
> I'm wondering whether there is a character to let R know to expect more
> input for a command on subsequent lines. Here is an example:

No, the rule R uses is to stop when the statement is complete.
> 
> test_1.R:
> x <- c(1,2,3,4)
>     / c(1,2,3,4)
> x

The first line is a complete statement, so R evaluates at that point.

> 
> R CMD BATCh test_1.R produces test_1.Rout:
>> x <- c(1,2,3,4)
>>   / c(1,2,3,4)
> Error: unexpected '/' in "  /"
> Execution halted
> 
> 
> test_2.R:
> x <- c(1,2,3,4) /
>     c(1,2,3,4)
> x
> 
> R CMD BATCh test_1.R produces test_2.Rout:
>> x <- c(1,2,3,4) /
> +   c(1,2,3,4)
>> x
> [1] 1 1 1 1
> 
> test_2.R works as expected but test_1.R fails because the "/" operator is at
> the start of line 2 not the end of line 1.

It would be worse if you had used + or -, because then there would be no 
syntax error, just an incorrect value in x.

> Is the some kind of continuation charater one can include in a script so R
> is expecting input on the next line? For example, in other languages, "\"
> works. Without this, one is forced to break lines carefully in the middle of
> a function, for example, to ensure R is expecting more. Any comments very
> welcome.

Once you get used to it, it's not hard to write in your test_2.R style. 
  It's probably possible to write an automatic detector for errors like

x <- c(1,2,3,4)
    + c(1,2,3,4)

based on heuristics:  "no assignment, extra indentation" => warning, but 
I don't know of an existing one.

Duncan Murdoch




More information about the R-help mailing list