if else错误:R中的"}"中出现意外的'}'

0 if-statement r

有史以来最简单的脚本,为什么我会收到错误:

> x <- -5
> if(x > 0){
+     print("Non-negative number")
+ } 
> else{
Error: unexpected 'else' in "else"
>     print("Negative number")
[1] "Negative number"
> }
Error: unexpected '}' in "}"
Run Code Online (Sandbox Code Playgroud)

如果我只是把其他人放在}之后,那就没问题了.

> x <- -5
> if(x > 0){
+     print("Non-negative number")
+ } else{
+     print("Negative number")
+ }
[1] "Negative number"
Run Code Online (Sandbox Code Playgroud)

事情是我总是把它写成没有问题的第一种方式; 我疯了吗?

Ben*_*ker 5

如果您以交互方式输入代码,R认为该if子句在看到第一个关闭括号后立即完成.然后它"认为" else正在开始一个新的声明,这是不允许的.来自help("else"):

特别是,您不应该在'}'和'else'之间使用换行符,以避免在键盘输入'if ... else'结构或通过'source'时出现语法错误.出于这个原因,防御性编程的一种(有点极端)态度是总是使用大括号,例如,对于'if'子句.

如果你使用R CMD BATCH那么这工作.您也可以使用括号,如帮助文件所示:

x <- -5
{ if(x > 0){
     print("Non-negative number")
  } 
  else {
     print("Negative number")
  }
}
Run Code Online (Sandbox Code Playgroud)

或者只是包含与else闭括号相同的行.