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

如何使用tidyverse筛选R语言数据框中仅含0值的行

tidyverse实现方案

你可以使用dplyr(tidyverse核心包之一)的filter()搭配if_all()函数完成筛选,代码如下:

# 加载dplyr,也可以直接加载整个tidyverse:library(tidyverse)
library(dplyr)

# 筛选逻辑:除ID外的所有列值均为0
df %>%
  filter(if_all(.cols = -ID, .fns = ~ .x == 0))

代码逻辑说明

  • if_all()是dplyr 1.0.0版本后推出的跨列条件判断函数,第一个参数指定要判断的列范围,这里-ID代表排除ID列的其余所有列
  • 第二个参数指定判断条件,~ .x == 0是匿名函数的简写,代表每一列的每个值都要等于0
  • 只有整行所有被选中的列都满足条件时,filter()才会保留该行,输出结果和你给出的预期完全一致。

低版本dplyr兼容方案

如果你使用的dplyr版本低于1.0.0不支持if_all(),可以用rowSums()实现相同逻辑:

df %>%
  filter(rowSums(select(., -ID) != 0) == 0)

该逻辑的原理是:先统计每行除ID列外不等于0的数值个数,仅保留个数为0(即全为0)的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:15:01