R中的值对交点
我在R中有以下R中的值对交点,r,set,set-intersection,R,Set,Set Intersection,我在R中有以下矩阵,但有22k个条目: > unbalanced row col [1,] 1 3 [2,] 4 5 [3,] 4 6 [4,] 5 6 [5,] 9 10 [6,] ... 是否有办法将该矩阵划分为相交数据的集合? 我的意思是: 如果任何行之间存在交集,我需要一个集合,其中包含这些行的结果并集。 理想情况下,最后我会有一个非相交集的列表,其中包含来自原始矩阵的所有数据 类似这样的情况(基于上述
矩阵
,但有22k个条目:
> unbalanced
row col
[1,] 1 3
[2,] 4 5
[3,] 4 6
[4,] 5 6
[5,] 9 10
[6,] ...
是否有办法将该矩阵划分为相交数据的集合
?
我的意思是:
如果任何行之间存在交集,我需要一个集合,其中包含这些行的结果并集。
理想情况下,最后我会有一个非相交集的列表,其中包含来自原始矩阵的所有数据
类似这样的情况(基于上述示例):
我过去在python中实现过类似的东西(使用迭代),但R是一个完全不同的“野兽”,可以而且应该避免像for
循环这样的迭代
提前感谢您提供的任何建议
更新:
使用@A.Webb的答案,使用aggregate(col~row,unbalanced,FUN=list)
可以让我更接近我想要的,但是仍然有一个遗漏的细节,从最初的问题中可能看不出来。
上面提到的解决方案提供了一个包含公共数据的集合列表(我在comments部分称之为重叠集合)。
为了说明这一点,我在下面的列表中得到:
row col
...
[160,] 160 c(161, 162, 194, 559, 1195)
[161,] 161 c(162, 194, 559, 1195)
...
我需要的是这两个集合的并集,因为它们的交集不同于∅ (空集)。
我还应该补充一点,我不需要名为“row”的列,因此任何丢弃它的解决方案对我来说都是可以的。我只需要一个包含集合的列表。澄清的问题听起来像是你在试图识别图论中所谓的连通分量。您有一个邻接矩阵的稀疏矩阵表示(请参见矩阵中的sparseMatrix
),您希望从中识别连接的组件(请参见'igraph中的集群
,它与
矩阵兼容)澄清的问题听起来像是在试图识别图论中所谓的连通组件。您有一个邻接矩阵的稀疏矩阵表示(请参见矩阵中的sparseMatrix
),您希望从中识别连接的组件(请参见'igraph中的集群
,它与
矩阵兼容)
row col
...
[160,] 160 c(161, 162, 194, 559, 1195)
[161,] 161 c(162, 194, 559, 1195)
...