在矩阵中进行不对称成对比较

时间:2013-06-04 02:33:41

标签: r

我有一个成对值但没有对称的矩阵,我的意思是,AxB与BxA不同。这是一个虚拟的例子:

    A    B    C    D    E
A    1  0.7  0.8  0.8  0.9
B  0.2    1  0.2  0.8  0.3
C  0.3  0.4    1  0.5  0.6
D  0.4  0.9  0.8    1  0.4
E  0.8  0.2  0.8  0.8    1

我需要知道有多少[i,j]次比较高于或等于0.7,以及为了删除高冗余元素,还有多少次比较[j,i]也高于0.7。在示例中,元素A具有更多数量的B, C, D, and E元素,应在进一步分析中将其删除。我曾想过在这个

中使用table命令
table1 <- apply(M, 1, table)
table2 <- apply(M, 2, table)

然后将table1与table2进行比较以删除冗余元素,这是一个好方法吗?

由于

1 个答案:

答案 0 :(得分:1)

您想对条目做什么&gt; 0.7?将它们设为NA?删除它们?无论如何,这应该让你朝着正确的方向前进:

#Assumes your data is named x
> which(x > 0.7, arr.ind = TRUE)
#----
  row col
A   1   1
E   5   1
B   2   2
D   4   2
...

#Set values = NA
x[which(x>0.7, arr.ind = TRUE)] <- NA
#---
    A   B   C   D   E
A  NA 0.7  NA  NA  NA
B 0.2  NA 0.2  NA 0.3
C 0.3 0.4  NA 0.5 0.6
D 0.4  NA  NA  NA 0.4
E  NA 0.2  NA  NA  NA