首页 > 解决方案 > R Matrix:有没有办法为每对列有条件地提取行名列表

问题描述

我有一个 *n 矩阵co

co <- matrix(c(0,1,2,1,0,
               1,0,0,0,0,
               2,0,0,1,0,
               1,0,1,0,2,
               0,0,0,2,0), ncol = 5, nrow = 5)

colnames(co) <- c("A", "B", "C", "D", "E")
rownames(co) <- colnames(co)

表示五个实体同时出现的次数A, B, C, D and E

现在,对于每一对列,我想提取两列都非零的行的行名。在实践中,我想看看两个焦点实体都连接到哪个“第三”实体。在网络术语中,它等于为每对节点找到相邻节点的名称。

我认为从这个矩阵接近它可能是更快的方法。

结果可以是一个列表,也可以是下面的三列数据框

df <- as.data.frame(cbind(c("A","A","A","B","B","C","C"),
            c("C","D","E","C","D","D","E"),
            c("D","C","D","A","A","A","D")))

在实践中,矩阵co大约是 10000 x 10000 条目,因此是一个sparseMatrix,所以我会欣赏与稀疏矩阵格式一起工作的解决方案。

标签: rmatrixsubset

解决方案


推荐阅读