我理解编写“if - else if”语句的常用方法如下:
if (2==1) {
print("1")
} else if (2==2) {
print("2")
} else {
print("3")
}
或
if (2==1) {print("1")
} else if (2==2) {print("2")
} else print("3")
相反,如果我这样写的话
if (2==1) {
print("1")
}
else if (2==2) {
print("2")
}
else (print("3"))
或者这样:
if (2==1) print("1")
else if (2==2) print("2")
else print("3")
该声明不起作用。你能解释一下为什么}
必须在同一行的else
或else if
之前?是否还有其他方法在R中编写if-else if-else语句,尤其是没有括号?
答案 0 :(得分:31)
R逐行读取这些命令,因此它认为在if语句之后执行表达式之后你已经完成了。请注意,您可以使用if
,无需添加else
。
你的第三个例子将在一个函数中起作用,因为整个函数在被执行之前被定义,所以R 知道它还没有完成(在if() do
之后)。< / p>
答案 1 :(得分:13)
在R中,我们还有 ifelse()功能:
<h1>A Web Page</h1>
<p id="demo">A Paragraph</p>
输出:
ifelse(1 < 0, "hello", "hi")
答案 2 :(得分:2)
正如hrbrmstr提到的那样:
当初始if后面跟着一个复合表达式(表示为 {}对)默认情况下,解析器会期望表达式 其次是其他化合物。唯一定义的使用else 是复合表达式。
在if(cond) cons.expr else alt.expr
语句中,else
需要放在与`cons.expr&#39;结尾相同的行之后。化合物
因此,如果您想让代码在没有括号的情况下更好看,请采用以下方式:
if (2==1) print("1") else
if (2==2) print("2") else
print("3")
答案 3 :(得分:0)
ifelse具有树参数,第一个条件,第二个真结果和最后一个假结果。
y_pred = ifelse(prob_predict > 0.5,1,0)
答案 4 :(得分:-3)
当有嵌套ifs时,最好使用大括号。例如,在
中if(n>0)
if(a>b)
z=a;
else
z=b;
如果不是if(n> 0),则else与内部相关。如果这不是您想要的,必须使用大括号来强制正确关联:
if(n>0){
if(a>b)
z=a;
}
else
z=b;
有关详细信息,请参阅一个非常好的完整教程:Conditional statements: if-else, else-if and switch in C !希望这对您有所帮助!