首页 > 解决方案 > ifelse() 中的多个变量赋值

问题描述

我在这里犯了什么错误?如果其中三个陈述为真,我正在尝试分配一些a值。b我正在尝试使用以下ifelse语句:

ifelse(1==1||2==2||3==3, (a<-100,b<-100), (a<-1000,b<-1000)) 

但我收到一个错误:

错误:“ ifelse(1==1||2==2||3==3,(a<-100,"

编辑:

以更一般化的方式,有两个变量 a 和 b 需要根据条件分配不同的值:if (x=="cat" or x=="dog" or x=="horse", then, a是 100,b 是 200,否则,a 是 500,b 是 1000)

标签: rif-statement

解决方案


回答OP在评论中很好地陈述的问题:

如果 (x=="cat" 或 x=="dog" 或 x=="horse",则 a 为 100,b 为 200,否则,a 为 500,b 为 1000)

if (x == "cat" || x == "dog" || x == "horse") {
  a = 100
  b = 200 
} else {
  a = 500
  b = 1000
}

我们可以做得更好,%in%而不是|- 效果很好,特别是如果你有更多的值要检查

if (x %in% c("cat", "dog", "horse")) {
  a = 100
  b = 200 
} else {
  a = 500
  b = 1000
}

ifelse是一个返回向量的向量化函数。如果你想“做”事情,或者为每个测试条件返回超过 1 个值,if(){}else{}是合适的。


推荐阅读