返回行/列名称而不是相关矩阵中的值

时间:2018-03-20 07:05:23

标签: r matrix

对于类似于下面的相关矩阵(但要大得多),我想选择所有相关性> 0.8然后返回行/列标签而不是值。但是,我坚持要退回标签。我尝试在语法中添加colnames,但我无法让它工作

dat <- mtcars
dat2 <- cor(dat)
diag(dat2) <- NA
dat3 <- which(dat2 > 0.8, arr.ind = TRUE)
dat3

     row col
disp   3   2
hp     4   2
cyl    2   3
wt     6   3
cyl    2   4
disp   3   6

所以我可以使用例如手动解决这个问题。 colnames(dat2)[3]但有没有办法让dat3自动填充所有标签?

1 个答案:

答案 0 :(得分:1)

我们可以使用索引来对行名和列名进行子集化

data.frame(rn = row.names(dat2)[dat3[,1]], cn = colnames(dat2)[dat3[,2]])

或使用dimnames

Map(`[`, dimnames(dat2), as.data.frame(dat3))