![](/img/trans.png)
[英]R: obtain lower.tri elements of a correlation matrix & identify each element with their respective row&colnames
[英]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.