[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