代码之家  ›  专栏  ›  技术社区  ›  Joshua Rosenberg Choens

使用R?识别相关矩阵中的对应元素?

  •  2
  • Joshua Rosenberg Choens  · 技术社区  · 7 年前

    与所有相关矩阵一样,该相关矩阵具有相应的元素,例如 R :

    m <- mtcars[, c("mpg", "cyl", "disp")]
    cor(m)
    #>             mpg        cyl       disp
    #> mpg   1.0000000 -0.8521620 -0.8475514
    #> cyl  -0.8521620  1.0000000  0.9020329
    #> disp -0.8475514  0.9020329  1.0000000
    

    也就是说,用于 共青团 与的单元格具有相同的值 .

    我之所以这样问,是因为我试图识别网络数据中的配对。社交网络数据通常存储在邻接矩阵中,邻接矩阵中的单元格表示关系的存在(或大小)。

    有什么简单的方法可以做到这一点吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   markus    7 年前

    1) 下面是一个使用 outer

    out <- outer(1:4, 1:4, paste, sep = "-")
    out[upper.tri(out)] <- sub("(\\d+)-(\\d+)", "\\2-\\1", out[upper.tri(out)])
    out
    #     [,1]  [,2]  [,3]  [,4] 
    #[1,] "1-1" "2-1" "3-1" "4-1"
    #[2,] "2-1" "2-2" "3-2" "4-2"
    #[3,] "3-1" "3-2" "3-3" "4-3"
    #[4,] "4-1" "4-2" "4-3" "4-4"
    

    fun <- function(dims, fill = NA) {
      mat <- matrix(fill, nrow = dims, ncol = dims)
      mat[upper.tri(mat)] <- seq_len(sum(upper.tri(mat)))
      pmax(mat, t(mat), na.rm = TRUE)
    }
    fun(4, fill = 0L)
    #     [,1] [,2] [,3] [,4]
    #[1,]    0    1    2    4
    #[2,]    1    0    3    5
    #[3,]    2    3    0    6
    #[4,]    4    5    6    0