【问题标题】:Order matrix from the order of another one with same col and row names in RR中具有相同列名和行名的另一个矩阵的顺序
【发布时间】:2020-05-04 09:48:45
【问题描述】:

你好我有两个矩阵

矩阵1

   C1 C2 C3 C4
R1 1  2  3  4
R2 5  6  7  8
R3 9  10 11 12
R4 13 14 15 16

另一个具有相同的列名和行名但按我想要的顺序排列:

矩阵2

   C2 C1 C4 C3
R1 A  B  C  D
R3 E  F  G  H
R4 I  J  K  L
R2 M  N  O  P

从这个我想以同样的方式订购Matrix1并得到:

   C2 C1 C4 C3
R1 1  1  4  3
R3 9  9  12 11
R4 13 13 16 15
R2 6  5  8  7

感谢您的帮助

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    您可以从mat2 中提取rownamescolnames 并使用它来订购mat1

    mat1[rownames(mat2),colnames(mat2)]
    
    #   C2 C1 C4 C3
    #R1  2  1  4  3
    #R3 10  9 12 11
    #R4 14 13 16 15
    #R2  6  5  8  7
    

    数据

    mat1 <- structure(c(1L, 5L, 9L, 13L, 2L, 6L, 10L, 14L, 3L, 7L, 11L, 15L, 
    4L, 8L, 12L, 16L), .Dim = c(4L, 4L), .Dimnames = list(c("R1", 
    "R2", "R3", "R4"), c("C1", "C2", "C3", "C4")))
    
    mat2 <- structure(c("A", "E", "I", "M", "B", "F", "J", "N", "C", "G", 
    "K", "O", "D", "H", "L", "P"), .Dim = c(4L, 4L), .Dimnames = list(
    c("R1", "R3", "R4", "R2"), c("C2", "C1", "C4", "C3")))
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      Matrix1 = matrix(1:16, 4, 4, dimnames = list(c('R1', 'R2', 'R3', 'R4'),
                                                   c('C1', 'C2', 'C3', 'C4')))
      
      Matrix2 = matrix(data = c('A', 'B', 'C', 'D',
                                'E', 'F', 'G', 'H',
                                'I', 'J', 'K', 'L',
                                'M', 'N', 'O', 'P'),
                       nrow = 4,
                       ncol = 4,
                       dimnames = list(c('R1', 'R3', 'R4', 'R2'),
                                       c('C2', 'C1', 'C4', 'C3')))
      
      Matrix1[rownames(Matrix2), colnames(Matrix2)]
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-28
        • 1970-01-01
        • 2020-02-07
        相关资源
        最近更新 更多