为什么下面的R代码会失败,因为第一个if条件后面没有花括号?

dba5bblo  于 2023-10-13  发布在  其他
关注(0)|答案(2)|浏览(146)

下面的R代码导致**“错误:未找到对象“test””.**

condition <- 1
if(condition == 0)
if(condition == 1)
{
  test <- "Pass"
}
print(test)

但是如果我在if条件后添加一个大括号,如下所示,那么它就可以正常工作。

condition <- 1
if(condition == 0){}
if(condition == 1)
{
  test <- "Pass"
}
print(test)

我在R中搜索了if condition的结构,发现this page,其中写着花括号是可选的。为什么代码会失败?

wlzqhblo

wlzqhblo1#

这里写着花括号是可选的

  • 大括号 * 是可选的。但是在if之后需要有 some 表达式。所以R取它找到的下一个表达式,这恰好是整个后续的if表达式。所以你的第一个代码被解析,就好像你写了
condition <- 1
if(condition == 0) {
    if(condition == 1)
    {
      test <- "Pass"
    }
}
print(test)

无论如何,你找到的页面是一个质量差的资源,我建议你忘记它;实际上,关于可选的花括号,它实际上是这样说的:
注意花括号是可选的,如果在R中后面没有else条件。

这是假的是否存在else(注:根本就没有“else条件”这回事)与大括号是否可选完全无关。页面的其他部分质量也很差。

mhd8tkvw

mhd8tkvw2#

为你的原始代码

condition <- 1
if(condition == 0)
if(condition == 1)
{
  test <- "Pass"
}
print(test)

第一个if默认将第二个if的块作为其语句,等价地,

condition <- 1
if(condition == 0) {
    if(condition == 1)
    {
       test <- "Pass"
    }
}
print(test)

但是由于condition <- 1,您永远不会输入内部的if,因此变量test根本没有初始化。

相关问题