【问题标题】:Return row / column names instead of values from correlation matrix返回行/列名而不是相关矩阵中的值
【发布时间】:2018-03-20 07:05:22
【问题描述】:

对于类似于下面的相关矩阵(但要大得多),我想选择所有 > 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 自动填充所有标签?

【问题讨论】:

  • 它返回一个向量(“disp”“hp”“cyl”“wt”“cyl”“disp”)。但它没有说明它与哪个变量组合相关。

标签: r matrix


【解决方案1】:

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

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

或使用dimnames

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

【讨论】:

  • 谢谢!第一个正是我需要的。
猜你喜欢
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 2019-12-07
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
相关资源
最近更新 更多