我在R中有以下matrix
,但有22k条目。:
> unbalanced
row col
[1,] 1 3
[2,] 4 5
[3,] 4 6
[4,] 5 6
[5,] 9 10
[6,] ...
有没有办法将此矩阵划分为交叉数据的sets
?
我的意思是:
如果任何行之间存在交集,我想要一个具有这些行的结合的集合。
理想情况下,最后我会得到一个非交叉集合列表,其中包含原始matrix
中的所有数据。
像这样(基于上面的例子):
[1,] 1 3
[2,] 4 5 6
[3,] 9 10
我在python中实现了类似的东西(使用迭代),但是R是完全不同的"野兽",并且感知它像for
循环这样的迭代的方式可以而且应该是避免。
提前感谢您提供的任何指示。
更新
使用@A。韦伯的答案,使用aggregate(col~row,unbalanced,FUN=list)
让我接近我想要的东西,但仍然缺少一个原始问题可能不明显的细节。
上面提到的解决方案提供了包含公共数据的集合列表(我在评论部分称之为重叠集合)。
为了说明,我在下面的列表中得到了这个:
row col
...
[160,] 160 c(161, 162, 194, 559, 1195)
[161,] 161 c(162, 194, 559, 1195)
...
我需要的是这两组的结合,因为它们的交集不同于empty(空集)。 我还应该补充一点,我不需要名为" row"的列,所以丢弃它的任何解决方案对我来说都没问题。我只需要一个带有集合的列表。