对顶级矩阵相关性进行排序并在不应用的情况下删除反向重复项

Sort for top matrix correlations and remove reverse duplicates without apply

我有一个相关矩阵,我需要提取最高值并删除反向重复项(sw6 & sw4 = 0.6 相关意味着与 sw4 & sw6 = 0.6 相同)。

我使用了 here that uses reshape to output the top correlations above 0.5. Now my only problem is that there are reverse duplicates. This 问题的答案,这几乎是我想要的,即删除这些反向重复项,但只有 apply 恐怕会减慢我的代码大集。有没有办法在没有它的情况下删除反向欺骗?

或者是否有更好的方法来获得矩阵的最高相关性,同时只产生独特的组合?

重塑熔化后的输出如下所示:

X1 X2 value sw6 sw4 0.6299408 sw4 sw6 0.6299408 ss sl 0.5833333 sl ss 0.5833333 id ty 0.5724780 ty id 0.5724780 sl br 0.5333965 br sl 0.5333965

但是每两行都是一样的

一个选项是将 upper.trilower.tri 替换为 NA,然后再替换为 melt。这具有 pre-processing 的优势,而不必 post-process。对于大型数据集,最好做 pre-processing 而不是转换为长数据集然后删除重复项

library(reshape2)
m1[lower.tri(m1, diag = TRUE)] <- NA
melt(m1, na.rm = TRUE)

注意:此外,除了 OP 已在使用的软件包外,不需要任何其他软件包