if - else if - else语句和括号

Mas*_*edi 31 if-statement r

我理解编写"if - else if"语句的常用方法如下:

if (2==1) {
  print("1")
} else if (2==2) {
  print("2")
} else {
  print("3")
}
Run Code Online (Sandbox Code Playgroud)

要么

if (2==1) {print("1") 
} else if (2==2) {print("2")
} else print("3")
Run Code Online (Sandbox Code Playgroud)

相反,如果我这样写

if (2==1) {
  print("1")
} 
else if (2==2) {
  print("2")
}
else (print("3"))
Run Code Online (Sandbox Code Playgroud)

或者这样:

if (2==1) print("1") 
else if (2==2) print("2")
else print("3")
Run Code Online (Sandbox Code Playgroud)

声明不起作用.你能解释一下为什么}必须先行elseelse if同一行吗?是否还有其他方法在R中编写if-else if-else语句,尤其是没有括号?

Ber*_*ool 36

R逐行读取这些命令,因此它认为在if语句之后执行表达式之后就完成了.请记住,您可以if 加添加地使用else.

你的第三个例子将在一个函数中工作,因为整个函数在被执行之前被定义,所以R 知道它还没有完成(之后if() do).

  • 这在R-inferno,第8.1.43节btw中提到. (3认同)

小智 13

在R中,我们也有ifelse()函数:

ifelse(1 < 0, "hello", "hi")
Run Code Online (Sandbox Code Playgroud)

输出:

# [1] "hi"
Run Code Online (Sandbox Code Playgroud)