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');}

我刚开始做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');}
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:我同意,不需要分号。编辑了我的答案。