【问题标题】:using ifelse in r with multiple returns在 r 中使用 ifelse 并返回多个
【发布时间】:2017-03-28 08:49:05
【问题描述】:

我想知道如何从一个真正的 ifelse 语句中设置两个或多个结果。
例如,如果x=2,我想设置y = 2t=3。我在想代码看起来像这样:

x=2 
ifelse(x==2,y=2 & t=3, y=0 & t=0)

但是这不起作用。

【问题讨论】:

  • 您需要对它进行矢量化还是x 是一个标量?
  • 你可以这样做:if(x==2) { y=2 ; t=3 } else { y=0 ; t=0 }
  • 通常,您从ifelse 的结果/返回值进行分配,而不是在ifelse 本身内。如果多次需要,将逻辑向量存储为索引,并在每次赋值中使用

标签: r if-statement


【解决方案1】:

你可以使用 if 语句块:

if(x == 2){
    y = 2
    t = 3
}
else {
    y = 0
    t = 0
}

或者,您可以尝试:

ifelse(x == 2, {y = 2; t = 3;}, {y = 0; t = 0;})

【讨论】:

  • 第二个选项不是一个好主意,因为ifelse 通常用于长度> 1 的向量,在这种情况下,您的使用将产生与@987654324 所期望的不同的结果@
  • @docendo discimus 我同意。
  • @docendodiscimus 也许您可以详细说明。上述公式中的 {} 将始终返回单个值,那么这里的风险是什么?
【解决方案2】:

在这里回答:If statement with multiple actions in R,对于块 IF 语句,ELSE 应该与前一个大括号位于同一行。

所以,而不是

if(x ==2) {
    y = 2
    t = 3
}
else {
    y = 0
    t = 0
}

格式应该是(ELSE和前面的大括号在同一行)

if(x ==2) {
    y = 2
    t = 3
} else {
    y = 0
    t = 0
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多