根据另一个矩阵的列对矩阵行名进行排序

时间:2018-10-24 10:34:55

标签: r sorting matrix row

我有两个类似于下面的矩阵:

a b c d             id1   id2  id3   id4
1 2 3 4              b     1    2    3
6 7 8 9              c     0    2    4
                     d     1    2    2
                     a     5    6    8

预期的输出结果如下:

     b c d a
[1,] 2 3 4 1
[2,] 7 8 9 6

我想根据第二个矩阵的第一列(id1)对左矩阵的行名进行排序。 有没有人建议如何处理? 我只是在尝试“第一矩阵” [colnames(“第二矩阵”),]。但这并不容易。

谢谢

1 个答案:

答案 0 :(得分:1)

你可以做

first_mat[,second_mat[, 1]]

#     b c d a
#[1,] 2 3 4 1
#[2,] 7 8 9 6

数据

first_mat <- structure(c(1L, 6L, 2L, 7L, 3L, 8L, 4L, 9L), .Dim = c(2L, 
  4L), .Dimnames = list(
  NULL, c("a", "b", "c", "d")))

second_mat <- structure(c("b", "c", "d", "a", "1", "0", "1", "5", "2", "2", 
  "2", "6", "3", "4", "2", "8"), .Dim = c(4L, 4L), .Dimnames = list(
   NULL, c("id1", "id2", "id3", "id4")))