在 R 中使用 ifelse

2024-04-09

我正在尝试在 R 中编写以下语句:if and ifelse.样本数据是试验数据,x、y 和 z 是试验的列)。

需要编码的语句

if (x>0) {
      if (y>0) {
          l=2
       }else{
           l=5
       }
      if (z>0) {
          m=l+2
       }else{
           m=5
       }
}

使用 ifelse 的 R 代码

trial$l<-with(trial, ifelse((x>0 &y>0),2,ifelse((x>0 &y<=0),5,???)))
trial$m<-with (trial,ifelse((x>0 &z>0),l+2,ifelse((x>0 &z<=0),5,???)))

where, ???指定根据上述语句没有任何值。换句话说对于x<0 and y没有价值观。

接下来,我使用 if 和 ifelse 的组合来查看是否有效:

if(trial$z>0){
    trial$l<-with(trial, ifelse(y>0,2,5))
    trial$m<-with(trial, ifelse(z>0,l+2,5))
}

这段代码没问题,但有一条警告消息(因为z是一个列向量)

In if (trial$z>0){
the condition has length>1 and only the first element will be used

我只想专注于使用ifelse因为我只处理向量。但是,我在这方面没有运气。任何想法?


如果你想使用 ifelse 和嵌套东西,你可以这样做

test <- data.frame(x = 2, y = 5, z = 3)
with(test, ifelse(z > 0 & x > 0 | y > 3, "yes", "no"))

在这种情况下,您使用逻辑运算符来保护输出。如果你仍然会得到“不”z <= 0,但你可以很容易地处理这个问题。

with(test, ifelse(z > 0, ifelse(x > 0 | y > 3, "yes", "no"), NA))

Nested ifelse语句在任何语言中都很难理解,因此如果最终得到的语句超过 3 个,请考虑匹配或 switch 语句。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中使用 ifelse 的相关文章

随机推荐