代码之家  ›  专栏  ›  技术社区  ›  Tyler Rinker DaniM

有效地重新排序非对称的正方形矩阵

r
  •  1
  • Tyler Rinker DaniM  · 技术社区  · 12 年前

    我有一个非对称的矩阵,正方形(等维),如下所示:

    m <- matrix(LETTERS[1:25], ncol=5, dimnames = list(1:5, 1:5))
    diag(m) <- "-"
    print(m, quote=FALSE)
    
      1 2 3 4 5
    1 - F K P U
    2 B - L Q V
    3 C H - R W
    4 D I N - X
    5 E J O T -
    

    我想以不同的顺序指定行/列,如下所示:

    new <- c(1, 5, 3, 2, 4)
    

    最终未引用的输出如下所示:

      1 5 3 2 4 
    1 - U K F P
    5 E - O J T
    3 C W - H R
    2 B V L - Q
    4 D X N I -
    

    如何有效地重新排序这样一个矩阵,它可以推广到其他类似的非对称平方矩阵?

    我唯一能想到的方法是用手,但这很傻,因为我怀疑可能有一种方法可以很容易地做到这一点。

    1 回复  |  直到 12 年前
        1
  •  4
  •   David    12 年前

    我想我遗漏了一些东西,但你不能在指数中参考一下吗?

    > m[new,new]
      1   5   3   2   4  
    1 "-" "U" "K" "F" "P"
    5 "E" "-" "O" "J" "T"
    3 "C" "W" "-" "H" "R"
    2 "B" "V" "L" "-" "Q"
    4 "D" "X" "N" "I" "-"