寻找可重排行列得到的全1最大尺寸子矩阵(基因表达矩阵场景)
寻找0-1矩阵中最大全1子矩阵(行=基因,列=样本)
现有一个0-1矩阵,行代表基因名称,列代表样本名称:
- 元素为1:表示对应基因在该样本中表达
- 元素为0:表示对应基因在该样本中不表达
我们需要找到在最多样本中表达的最大基因子集,也就是通过重排行和列,得到的尺寸最大的仅含1的子矩阵。以下是示例演示:
# 构造初始矩阵 mat <- matrix(c(1,0,1,1,1,0,1,0,1),nrow = 3,byrow = T) mat [,1] [,2] [,3] [1,] 1 0 1 [2,] 1 1 0 [3,] 1 0 1 ### 第一步:交换第2列和第3列 mat1 <- mat mat1[,2] <- mat[,3] mat1[,3] <- mat[,2] mat1 [,1] [,2] [,3] [1,] 1 1 0 [2,] 1 0 1 [3,] 1 1 0 ### 第二步:交换第2行和第3行 mat2 <- mat1 mat2[2,] <- mat1[3,] mat2[3,] <- mat1[2,] mat2 [,1] [,2] [,3] [1,] 1 1 0 [2,] 1 1 0 [3,] 1 0 1 ### 此时矩阵左上角的2×2子矩阵就是我们要找的最大全1子矩阵
内容的提问来源于stack exchange,提问作者wutao
相关产品推荐
相关产品推荐

