R语言如何删除矩阵中取值非0和1的对应整行数据
R语言矩阵过滤实现方案
你构造的默认是单列8行矩阵,可直接按元素取值筛选符合要求的行,以下是可直接运行的实现代码:
基础R实现(适配单列矩阵场景)
- 构造原始矩阵
df <- matrix(c(1,0,3,1,0,0,99,2))
- 过滤仅含0/1的行
df_filtered <- df[df %in% c(0,1), , drop = FALSE]
- 逻辑说明:
%in%会逐个判断矩阵元素是否属于0、1的取值集合,返回的逻辑向量直接用于行索引;drop = FALSE用来保证输出结果仍是矩阵格式,避免自动降维为向量。
通用实现(适配多列矩阵场景)
如果后续你的矩阵扩展为多列,需要判断整行所有元素都是0或1才保留,可以使用行遍历的写法:
df_filtered <- df[apply(df, 1, function(x) all(x %in% c(0,1))), , drop = FALSE]
- 逻辑说明:
apply(df, 1, ...)按行遍历矩阵,all(x %in% c(0,1))判断当前行所有元素都符合0/1的取值要求,符合条件的行会被保留。
结果验证
过滤后的输出结果如下,完全匹配你需要的保留取值:
[,1] [1,] 1 [2,] 0 [3,] 1 [4,] 0 [5,] 0
内容的提问来源于stack exchange,提问作者nero7
相关产品推荐
相关产品推荐

