R中的值对交叉点

时间:2016-03-02 18:06:25

标签: r set set-intersection

我在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"的列,所以丢弃它的任何解决方案对我来说都没问题。我只需要一个带有集合的列表。

0 个答案:

没有答案