【发布时间】:2014-11-11 04:22:14
【问题描述】:
我理解写“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 语句,尤其是不带括号的?
【问题讨论】:
-
当初始
if后跟一个复合表达式(由{}对指示)时,默认情况下解析器会期望else后跟的表达式也是复合表达式。else的唯一定义用途是复合表达式。这甚至在文档中都有说明:if(cond) cons.expr else alt.expr其中cons.expr和alt.expr被定义为复合。正如@Berry 指出的那样,您可以使用 R 解析函数定义的方式来解决这个问题,但最好在括号使用中保持一致(IMO)。 -
如果你将不寻常的 if-else 括在括号
{ bad if-else expr }或更常见的函数function() { bad if-else expr}中,它也会起作用 -
我很遗憾“重新格式化代码”(在 RStudio 中)没有将 else 格式化到正确的位置。它可以看到这个问题,恕我直言。
标签: r if-statement