对于类似于下面的相关矩阵(但要大得多),我想选择所有相关性> 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自动填充所有标签?
答案 0 :(得分:1)
我们可以使用索引来对行名和列名进行子集化
data.frame(rn = row.names(dat2)[dat3[,1]], cn = colnames(dat2)[dat3[,2]])
或使用dimnames
Map(`[`, dimnames(dat2), as.data.frame(dat3))