我有一个矩阵,其中行是基因名称,列是样本名称。该矩阵的元素为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
###first swap column2 and column3
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
###then swap row2 and row3
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
###then the up-left is wanted matrix