【问题标题】:Multiple If Statements in RR中的多个If语句
【发布时间】:2015-09-24 13:12:12
【问题描述】:

我整天都在想办法解决这个问题,但无济于事。 我有一个 if 语句,旨在满足四个可能的条件。

  1. A 存在,B 不存在
  2. B 存在,A 不存在
  3. A 和 B 存在
  4. A 和 B 不存在

A、B、C 是数据帧。

这是我的代码:

if (!exists("A") & exists("B")) {
  C= B} 
else if (exists("A") & !exists("B")) {
  C= A}
else if (exists("A") & exists("B")) {
  C= rbind(B,A)} 
else {C <- NULL}

我不断收到意外“}”和意外“else”的错误。 我已经遵循了几个例子,但仍然面临着这个挑战。任何指针将不胜感激。谢谢。

【问题讨论】:

  • 您正在多次测试同一事物。您可以使用if(exists("A")) { if(exits("B")) {C &lt;- rbind(B, A)} else {C &lt;- A} } else {if(exits("B")) {C &lt;- B} else { C &lt;- NULL} } 甚至okA &lt;- exists("A") ; okB &lt;- exists("B") 并使用上述行中的那些
  • 你也可以use cases function来避免多个if/else语句

标签: r if-statement


【解决方案1】:

试试这个

if (!exists("A") & exists("B")) {
    C= B
} else if (exists("A") & !exists("B")) {
    C= A
} else if (exists("A") & exists("B")) {
    C= rbind(B,A)
} else {C <- NULL}

【讨论】:

    【解决方案2】:

    一个简单的解决方案是使用大括号括起来的复合语句,将else 与标记语句结束的右大括号放在同一行,如下所示:

    if (condition 1) {
        statement 1
    } else if (statement 2) {
        statement 2
    } else {
        statement 3
    }
    

    如果您的if 语句不在一个块中,那么else 语句必须与上面statement 1 的末尾出现在同一行。否则,statement 1 末尾的新行将完成 if 并产生一个语法完整的语句,然后对其进行评估。

    以上内容或多或少是对第 3.2.1 节的引用。在 R 语言定义中 (http://cran.r-project.org/doc/manuals/R-lang.pdf)。希望有帮助:)

    【讨论】:

    • 注意:如果您的ifs 在函数内部,则无需使用复合语句。
    • 哦,终于明白了。我完全忽略了关于线条的全部内容。谢谢
    猜你喜欢
    • 2017-06-25
    • 2021-03-16
    • 1970-01-01
    • 2014-09-06
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    相关资源
    最近更新 更多