ben*_*890 8 r matrix correlation
我有一个很大的相关矩阵(1093 x 1093).我正在尝试将我的矩阵放入一个数据帧,每个行和列对都有一列,所以它会(1093)^ 2条记录.
这是我的矩阵片段
60516 45264 02117
60516 1.00000000 -0.370793012 -0.082897941
45264 -0.37079301 1.000000000 0.005145601
02117 -0.08289794 0.005145601 1.000000000
Run Code Online (Sandbox Code Playgroud)
这里的目标是拥有一个如下所示的数据框:
row column correlation
60516 60516 1.000000000
60516 45264 -0.370793012
Run Code Online (Sandbox Code Playgroud)
........ 等等.
有人有任何提示吗?如果我能澄清任何事情,请告诉我
谢谢,本
jba*_*ums 12
对于矩阵m,您可以这样做:
data.frame(row=rownames(m)[row(m)], col=colnames(m)[col(m)], corr=c(m))
# row col corr
# 1 60516 60516 1.000000000
# 2 45264 60516 -0.370793010
# 3 02117 60516 -0.082897940
# 4 60516 45264 -0.370793012
# 5 45264 45264 1.000000000
# 6 02117 45264 0.005145601
# 7 60516 02117 -0.082897941
# 8 45264 02117 0.005145601
# 9 02117 02117 1.000000000
Run Code Online (Sandbox Code Playgroud)
但是如果你的矩阵是对称的,如果你对对角线不感兴趣,那么你可以将它简化为:
data.frame(row=rownames(m)[row(m)[upper.tri(m)]],
col=colnames(m)[col(m)[upper.tri(m)]],
corr=m[upper.tri(m)])
# row col corr
# 1 60516 45264 -0.370793012
# 2 60516 02117 -0.082897941
# 3 45264 02117 0.005145601
Run Code Online (Sandbox Code Playgroud)