You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言all()函数反向实现:如何判断多逻辑向量全为FALSE

解决R中逐元素判断多逻辑向量全为FALSE的问题

你出错的核心原因是用了all()——这个函数是对整个向量做整体判断,返回单个逻辑值(只有当所有元素都满足时才返回TRUE),所以赋值给data$oth后,整个列都会变成同一个值,自然不符合你逐行判断的需求。

下面是几种正确的实现方式:

  • 直接用逐元素逻辑与操作&:

    # 取反后逐元素与
    data$oth <- !data$com & !data$edit & !data$cont
    
    # 或者直接判断每个变量为FALSE后逐元素与
    data$oth <- data$com == FALSE & data$edit == FALSE & data$cont == FALSE
    

    注意要用&而不是&&,后者也是整体判断,只会返回单个值。

  • 用rowSums()简化操作(逻辑向量计算时TRUE=1,FALSE=0):

    data$oth <- rowSums(cbind(data$com, data$edit, data$cont)) == 0
    

    当三个变量全为FALSE时,行和为0,刚好符合你的条件,变量多的时候这个写法更简洁。

  • 如果你用tidyverse系列工具,可以用dplyr的if_all:

    library(dplyr)
    data <- data %>%
      mutate(oth = if_all(c(com, edit, cont), ~ . == FALSE))
    

R里并没有所谓的all()反向函数,关键是要区分整体判断函数和逐元素操作符/函数的差异——你需要的是逐行检查每个观测的三个变量是否全为FALSE,而非检查整个向量的所有元素是否满足条件。

内容的提问来源于stack exchange,提问作者EmilA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 15:25:25