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

R语言中按指定条件删除矩阵行的基础R解决方案求助

基础R解决方案

首先,我们需要构建一个逻辑向量标记需保留的行,核心是准确判断每行是否符合保留规则:

  • 若cond[1]为0,排除第1列或第3列包含1的行;若为1,保留所有行
  • 若cond[2]为0,排除第2列或第4列包含1的行;若为1,保留所有行

以下是实现代码:

# 定义原始矩阵
testMat <- matrix(c(1,2,1,3,
                 3,2,3,3,
                 1,3,1,3,
                 2,3,3,3,
                 3,3,3,3,
                 3,2,3,1), byrow = T, ncol = 4)

# 定义二元条件(可替换为c(0,1), c(1,0), c(1,1))
cond <- c(0,0)

# 初始化保留行的逻辑向量
keep_rows <- TRUE

# 处理第一个条件
if (cond[1] == 0) {
  # 排除第1/3列存在1的行
  keep_rows <- keep_rows & !(rowSums(testMat[, c(1,3)] == 1) > 0)
}

# 处理第二个条件
if (cond[2] == 0) {
  # 排除第2/4列存在1的行
  keep_rows <- keep_rows & !(rowSums(testMat[, c(2,4)] == 1) > 0)
}

# 生成过滤后的新矩阵
newMat <- testMat[keep_rows, ]

代码说明

  • rowSums(testMat[, c(1,3)] == 1):计算每行中第1、3列等于1的元素数量,结果大于0则说明该行这两列至少有一个1
  • !(rowSums(...) > 0):取反后得到该行这两列均无1的逻辑值,符合cond[1]为0时的保留要求
  • 两个条件通过&组合,只有同时满足两个保留规则的行才会被保留

验证结果

  • 当cond <- c(0,0),排除第1、3、6行,与示例结果一致
  • 当cond <- c(0,1),仅排除第1、3行,结果正确
  • 当cond <- c(1,0),仅排除第6行,结果正确
  • 当cond <- c(1,1),所有行保留,结果正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:02:08