我在R中具有以下矩阵mat
:
x y z
rowA -1 1 2
rowB -1 -2 -1
rowC 2 1 -1
如何计算矩阵各列之间的相关性(例如corr(x,y)
,corr(y,z)
,corr(x,z)
),而不是将各列分成向量?
如果人们能抽出时间来解释这一点,我将不胜感激。
我在R中具有以下矩阵mat
:
x y z
rowA -1 1 2
rowB -1 -2 -1
rowC 2 1 -1
如何计算矩阵各列之间的相关性(例如corr(x,y)
,corr(y,z)
,corr(x,z)
),而不是将各列分成向量?
如果人们能抽出时间来解释这一点,我将不胜感激。
您可以这样做:
#gives pairwise
COR = cor(M)
# to get 1 vs 2,1 vs 3 and 2 vs 3
COR[upper.tri(COR)]
,
我们可以使用combn
创建一次取2的列名称组合,从矩阵中组合该组合,然后计算它们之间的相关性。
combn(colnames(mat),2,function(x) cor(mat[,x[1]],mat[,x[2]]))
#[1] 0.5 -0.5 0.5
数据
mat <- structure(c(-1L,-1L,2L,1L,-2L,-1L),.Dim = c(3L,3L),.Dimnames = list(c("rowA","rowB","rowC"),c("x","y","z")))
,
基本R:
cor_df <- data.frame(vars = row.names(cor(mat)),cor(mat),row.names = NULL)