【问题标题】:Getting symmetric matrix coordinates based off of condition in R根据 R 中的条件获取对称矩阵坐标
【发布时间】:2014-12-16 04:20:59
【问题描述】:

我在 R.df 中有一个对称矩阵或数据框,无论哪个更简单。

我想获取矩阵中元素 >= 0.90 的所有 (row name, column name) 对。 但是,我想排除对角线元素。另外,我希望元素在 (x,y) 与 (y,x) 相同的意义上是唯一的

例如:

df
   A      B     C       D    E
A   1    0.4    0.4    0.1  0.9
B  0.4   1      0.4    0.4  0.1
C  0.4   0.4    1      0.1  0.3
D  0.1   0.4    0.1     1   0.1
E  0.9   0.1    0.3    0.1   1

我只想要

(E,A) 或 (A,E)(只需要其中一个)。

【问题讨论】:

    标签: r matrix dataframe boolean-logic


    【解决方案1】:

    假设你有一个类似的测试矩阵

    mm <- structure(c(1, 0.4, 0.4, 0.1, 0.9, 0.4, 1, 0.4, 0.4, 0.1, 0.4, 
    0.4, 1, 0.1, 0.3, 0.1, 0.4, 0.1, 1, 0.1, 0.9, 0.1, 0.3, 0.1, 
    1), .Dim = c(5L, 5L), .Dimnames = list(c("A", "B", "C", "D", 
    "E"), c("A", "B", "C", "D", "E")))
    

    您可以获得与您的条件匹配的行/列的索引

    idx <- which(mm>=.9 & lower.tri(mm), arr.ind=TRUE)
    

    然后你可以得到名字

    cbind(rownames(mm)[idx[,1]], colnames(mm)[idx[,2]])
    
    #      [,1] [,2]
    # [1,] "E"  "A" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 2020-11-15
      • 2013-06-20
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      相关资源
      最近更新 更多