如何在R语言中按条件删除行?自动移除全为TRUE的行
解决方法
可以通过两种完全自动化的方式实现需求,无需指定任何列名或索引:
方法一:用apply()逐行判断
利用apply()对每一行执行全量检查,筛选出不是所有列都为TRUE的行:
# 筛选保留非全TRUE的行 df_filtered <- df[!apply(df, 1, all), ]
apply(df, 1, all):对数据框的每一行(参数1代表行方向)调用all()函数,返回一个逻辑向量,标记每行是否全为TRUE!对结果取反,得到需要保留的行的索引,最终完成筛选
方法二:用行和与列数对比
在R中TRUE等价于1,FALSE等价于0,全为TRUE的行的行和必然等于数据框的列数,据此筛选:
# 筛选行和不等于列数的行(即非全TRUE的行) df_filtered <- df[rowSums(df) != ncol(df), ]
rowSums(df)计算每行的总和ncol(df)自动获取数据框的列数,无需手动指定- 通过判断行和是否不等于列数,精准筛选出目标行
最终筛选结果
执行后得到的df_filtered如下:
df1 df2 df3 1 TRUE TRUE FALSE 2 TRUE FALSE TRUE 3 FALSE FALSE TRUE
内容的提问来源于stack exchange,提问作者user18948933
相关产品推荐
相关产品推荐

