为什么不评估第二个ifelse?

马克西米利安

在下面的代码中,我不明白为什么第二个ifelse()不被评估。有人可以解释吗?如何重写该ifelse语句?

y1==1y2==1最后一排匹配,列结果应该充满1

df <- data.frame(x1=c(0,0,NA,NA,NA),y1=c(NA,NA,NA,NA,1),x2=c(0,NA,NA,0,NA),
                 y2=c(1,NA,NA,NA,1))

df$result <- with(df, ifelse((x1==0 & x2==0), 0, ifelse((y1==1 & y2==1), 1, 100)))
席菲尼

试试这个:

df$result <- with(df, ifelse((x1==0 & x2==0) & !is.na(x1==0 & x2==0), 0,
                             ifelse((y1==1 & y2==1), 1, 100)))

结果:

> df
  x1 y1 x2 y2 result
1  0 NA  0  1      0
2  0 NA NA NA     NA
3 NA NA NA NA     NA
4 NA NA  0 NA     NA
5 NA  1 NA  1      1

解决方案使用apply()if()

如果要使用if()apply()而不是ifelse()

df$result = apply(df,1,function(x){

    if(is.na(x["x1"]==0 & x["x2"]==0) & is.na(x["y1"]==1 & x["y2"]==1)){
        return(NA)
    }

    if(!is.na(x["x1"]==0 & x["x2"]==0) & (x["x1"]==0 & x["x2"]==0)){
        return(0)
    }else if(!is.na(x["y1"]==1 & x["y2"]==1) & (x["y1"]==1 & x["y2"]==1)){
        return(1)
    }else{
        return(100)
    }

})

结果与上面相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么第二个for循环不执行?

来自分类Dev

为什么第二个for循环不执行?

来自分类Dev

为什么要比第一个仪器评估第二个仪器?

来自分类Dev

为什么我的第二个函数不返回任何东西?

来自分类Dev

为什么第二个事件侦听器不触发?

来自分类Dev

为什么C ++不尝试使用第二个模板重载?

来自分类Dev

为什么不压缩/ var / log上的第二个日志文件

来自分类Dev

为什么我的程序不执行第二个catch块?

来自分类Dev

当错误存在时,为什么我的程序不执行第二个catch块?

来自分类Dev

为什么错误处理程序不处理第二个错误?

来自分类Dev

为什么第二个printf打印0

来自分类Dev

为什么第二个for循环未运行?

来自分类Dev

为什么它适用第二个参数?

来自分类Dev

为什么当第二个箭头指示器出现时EA不执行任何操作?

来自分类Dev

Java断言-第二个参数评估?

来自分类Dev

为什么第二个导航移至第一个导航

来自分类Dev

为什么一个值改变但第二个值没有改变?

来自分类Dev

为什么第一个验证不检查第二个?

来自分类Dev

为什么此正则表达式不匹配第二个二进制间隔?

来自分类Dev

strtok()不处理第二个令牌

来自分类Dev

strtok()不处理第二个令牌

来自分类Dev

变量不传递给第二个php

来自分类Dev

getopts与第二个参数不匹配

来自分类Dev

ng-if不隐藏第二个元素

来自分类Dev

不启动第二个活动之间的交流

来自分类Dev

Android finishAndRemoveTask 不启动第二个活动

来自分类Dev

第二个承诺不运行(NodeJS)

来自分类Dev

为什么第二个呼叫不能批量工作?

来自分类Dev

两节点DSE火花群集错误设置了第二个节点。为什么?

Related 相关文章

热门标签

归档