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

______________________________________________
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