簡體   English   中英

使用 R 識別相關矩陣中的相應元素?

[英]Identify corresponding elements in a correlation matrix using R?

像所有相關矩陣一樣,這個相關矩陣在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

即, cyl, mpg的單元格與mpg, cyl的單元格具有相同的值。

我如何識別這些相應的或互惠的細胞?

我問是因為我試圖識別網絡數據中的對。 社交網絡數據通常存儲在鄰接矩陣中,該矩陣中的單元格表示關系的存在(或大小)。

有沒有一些直接的方法來做到這一點?

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"

2)然而,這是一種更快的方法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM