R if else语句中的奇怪行为
我刚开始做R编程。当我试图写我的第一个if-else语句时,我遇到了一个奇怪的行为,我不明白 当我运行以下代码时:R if else语句中的奇怪行为,r,if-statement,R,If Statement,我刚开始做R编程。当我试图写我的第一个if-else语句时,我遇到了一个奇怪的行为,我不明白 当我运行以下代码时: x = 4; y=4; if (x==y) { print('they are equal'); } else { print('they are not equal'); } 我没有得到错误,我得到了预期的输出。但是,当我更改相同代码的缩进时,如下所示: if(x==y){print('they are equal');}
x = 4;
y=4;
if (x==y) {
print('they are equal');
} else {
print('they are not equal');
}
我没有得到错误,我得到了预期的输出。但是,当我更改相同代码的缩进时,如下所示:
if(x==y){print('they are equal');}
else{print('they are not equal');}
我收到一条错误消息,在“else”中显示“error:unexpected'else”
那么这是否意味着R像Python一样是一种缩进敏感语言?根据我有限的经验,在Rsyntex中,
else
语句应该从if
语句结束的同一行开始。否则,它将不起作用。而R对缩进不敏感。比如说,
这将起作用
if(x==y){print('they are equal')
} else
{print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')} else
{print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')} else {print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')}
else {
print('they are not equal')}
即使这样也会起作用
if(x==y){print('they are equal')
} else
{print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')} else
{print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')} else {print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')}
else {
print('they are not equal')}
这也会起作用
if(x==y){print('they are equal')
} else
{print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')} else
{print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')} else {print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')}
else {
print('they are not equal')}
但是您编写的代码不起作用,因为else
语句不是从if
语句结束的同一行开始的。另一个例子是
这行不通
if(x==y){print('they are equal')
} else
{print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')} else
{print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')} else {print('they are not equal')}
[1] "they are equal"
if(x==y){print('they are equal')}
else {
print('they are not equal')}
另外,您不需要分号。来自文档:
请注意,忘记在语句周围加括号({..})是一个常见的错误,例如,在if(..)或for(..)之后。特别是,}和else之间不应该有换行符,以避免在输入if。。。else在键盘上或通过源代码进行构造代码>请删除分号。R不是C,在R中,分号表示指令的结束,因此print('它们不相等')
实际上是两条指令:print(‘它们不相等’);NULL
打印和NULL
说明。@RuiBarradas:我同意,不需要分号。编辑了我的答案。