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

矩阵子集化:保留未被提取的信息

解决方法

要获取矩阵A中未被存入B的行(也就是A的前两行),且无需手动指定行索引,可以通过以下几种方式实现:

方法1:利用行索引的差集

通过setdiff函数计算A的所有行索引与B的行索引的差集,直接提取目标行:

A <- matrix(c(1:25),nrow=5,ncol=5)
B <- A[-c(1:2),]

# 计算A中未出现在B里的行索引,再提取对应行
A_red <- A[setdiff(seq_len(nrow(A)), as.integer(rownames(B))), ]

方法2:逻辑索引标记

生成逻辑向量标记A中哪些行未被B包含,再筛选出目标行:

A <- matrix(c(1:25),nrow=5,ncol=5)
B <- A[-c(1:2),]

# 创建标记向量,初始全为TRUE
row_marker <- rep(TRUE, nrow(A))
# 将B对应的行标记为FALSE
row_marker[as.integer(rownames(B))] <- FALSE
# 提取未被标记的行
A_red <- A[row_marker, ]

方法3:用dplyr的反连接(需加载包)

如果习惯用tidyverse工具,可以将矩阵转成数据框后用anti_join筛选:

library(dplyr)

A <- matrix(c(1:25),nrow=5,ncol=5)
B <- A[-c(1:2),]

# 转成数据框后做反连接,再转回矩阵
A_red <- as.matrix(anti_join(as.data.frame(A), as.data.frame(B)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:43:22