在R语言中使用ifelse实现多个返回值

4

我在思考如何设置从真的ifelse语句中得到两个或更多结果。
例如,如果x=2,我想要设置y = 2t=3。我的想法是代码应该看起来像这样:

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

然而,这并不起作用。

您需要将其向量化吗,还是x是一个标量? - Wolfgang
1
你可以这样做:如果x等于2,则执行语句y=2; t=3,否则执行语句y=0; t=0。 - count
通常情况下,您将从ifelse的结果/返回值中进行赋值,而不是在ifelse本身内部进行赋值。如果您需要多次使用它,请将逻辑向量存储为索引,并在每个赋值中使用它。 - talat
2个回答

3
您可以使用if语句块:
if(x == 2){
    y = 2
    t = 3
}
else {
    y = 0
    t = 0
}

或者,你可以尝试:

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

1
第二个选项并不是一个好主意,因为ifelse通常用于长度>1的向量,在这种情况下,您的使用方式将产生与人们从ifelse期望的不同的结果。 - talat
@docendo discimus 我同意。 - student
@docendodiscimus 或许你可以详细说明一下。在上述公式中,{} 总是返回单个值,那么这里存在什么风险呢? - geotheory

0

正如在这里回答的R中带有多个操作的if语句,对于块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
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接