【问题标题】:matrix - mirror lower triangle to upper triangle矩阵 - 将下三角形镜像到上三角形
【发布时间】:2018-03-02 09:22:36
【问题描述】:

如何用 diag 翻转 lower.tri 并且没有最后一行到 upper.tri?

m <- structure(c(1, 2, 3, 4, 5, NA, 66, 77, 88, 99, NA, NA, 333, 444, 
555, NA, NA, NA, 101, 202, NA, NA, NA, NA, 99999), .Dim = c(5L, 
5L), .Dimnames = list(c("v_2", "v_3", "v_3a", "v_3b", "v_4"), 
    c("v_0", "v_2", "v_3", "v_3a", "v_3b")))

看起来像:

     v_0 v_2 v_3 v_3a  v_3b
v_2    1  NA  NA   NA    NA
v_3    2  66  NA   NA    NA
v_3a   3  77 333   NA    NA
v_3b   4  88 444  101    NA
v_4    5  99 555  202 99999

想要的结果:

     v_0 v_2 v_3 v_3a  v_3b
v_2    1   1   2    3     4
v_3    2  66  66   77    88
v_3a   3  77 333  333   444
v_3b   4  88 444  101   101
v_4    5  99 555  202 99999

lower.tri()upper.tri() 非常确定的函数可能会有所帮助。

【问题讨论】:

  • @jogo 修复了它!

标签: r matrix


【解决方案1】:

你可以这样做:

tm <- t(m)[,-nrow(m)] # or t(m[-nrow(m),])
m[upper.tri(m)] <- tm[upper.tri(tm, diag = TRUE)]
# > m
#      v_0 v_2 v_3 v_3a  v_3b
# v_2    1   1   2    3     4
# v_3    2  66  66   77    88
# v_3a   3  77 333  333   444
# v_3b   4  88 444  101   101
# v_4    5  99 555  202 99999

【讨论】:

    猜你喜欢
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多