R-将相关矩阵转换为成对矩阵
我想将相关矩阵转换为成对表(删除自匹配和重复) 下面是一个示例数据集R-将相关矩阵转换为成对矩阵,r,matrix,R,Matrix,我想将相关矩阵转换为成对表(删除自匹配和重复) 下面是一个示例数据集 rmat.test<-structure(c(1, 0.861194908618927, 0.826931774616241, 0.796892821788788, 0.83096307516098, 0.861194908618927, 1, 0.878752708435059, 0.855243384838104, 0.880544185638428, 0.826931774616241, 0.878752708
rmat.test<-structure(c(1, 0.861194908618927, 0.826931774616241, 0.796892821788788,
0.83096307516098, 0.861194908618927, 1, 0.878752708435059, 0.855243384838104,
0.880544185638428, 0.826931774616241, 0.878752708435059, 1, 0.850607931613922,
0.850719928741455, 0.796892821788788, 0.855243384838104, 0.850607931613922,
1, 0.876053333282471, 0.83096307516098, 0.880544185638428, 0.850719928741455,
0.876053333282471, 1), .Dim = c(5L, 5L), .Dimnames = list(c("A",
"B", "C", "D", "E"), c("A", "B", "C", "D", "E")))
我试过使用upper.triangle,但我不知道如何保留和使用行名
rmat.up<-rmat.test[upper.tri(rmat.test)]
# below yields NULL
rownames(rmat.test[upper.tri(rmat.test)])
rmat.up您可以尝试(不使用您的函数)
rmat.test[lower.tri(rmat.test,diag=TRUE)]=NA#put NA
rmat.test和另一种方法:
tmp <- melt(rmat.test)
tmp <- data.frame(t(apply(tmp, 1, sort)))
tmp <- tmp[duplicated(tmp[, 1 : 2], MARGIN = 1), ]
tmp[, 3 : 1]
# X3 X2 X1
#6 B A 0.8611949
#11 C A 0.8269318
#12 C B 0.8787527
#16 D A 0.7968928
#17 D B 0.8552434
#18 D C 0.8506079
#21 E A 0.8309631
#22 E B 0.8805442
#23 E C 0.8507199
#24 E D 0.8760533
tmp
rmat.up<-rmat.test[upper.tri(rmat.test)]
# below yields NULL
rownames(rmat.test[upper.tri(rmat.test)])
rmat.test[lower.tri(rmat.test,diag=TRUE)]=NA # put NA
rmat.test<-as.data.frame(as.table(rmat.test)) # as a dataframe
rmat.test<-na.omit(rmat.test) # remove NA
rmat.test<-rmat.test[with(rmat.test, order(-Freq)), ] # order by correlation
rmat.test
Var1 Var2 Freq
22 B E 0.8805442
12 B C 0.8787527
24 D E 0.8760533
6 A B 0.8611949
17 B D 0.8552434
23 C E 0.8507199
18 C D 0.8506079
21 A E 0.8309631
11 A C 0.8269318
16 A D 0.7968928
tmp <- melt(rmat.test)
tmp <- data.frame(t(apply(tmp, 1, sort)))
tmp <- tmp[duplicated(tmp[, 1 : 2], MARGIN = 1), ]
tmp[, 3 : 1]
# X3 X2 X1
#6 B A 0.8611949
#11 C A 0.8269318
#12 C B 0.8787527
#16 D A 0.7968928
#17 D B 0.8552434
#18 D C 0.8506079
#21 E A 0.8309631
#22 E B 0.8805442
#23 E C 0.8507199
#24 E D 0.8760533