You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需igraph:用data.table或Base R实现图数据的高效分组聚类

用data.table或Base R识别图的连通分量(替代igraph)

我有如下结构的图数据:

library(data.table)

dt = data.table(
  n1 = c(1, 1, 2, 4, 6),
  n2 = c(2, 3, 3, 5, 3)
)

输出的dt内容:

> dt
   n1 n2
1:  1  2
2:  1  3
3:  2  3
4:  4  5
5:  6  3

其中dt描述节点间的连接关系,我希望识别该结构中的聚类集合,得到如下结果:

output = data.table(
  node = 1:6,
  grp = c(1,1,1,2,2,1)
)

输出的output内容:

> output
   node grp
1:    1   1
2:    2   1
3:    3   1
4:    4   2
5:    5   2
6:    6   1

我可以用igraph库实现这个需求:

library(igraph)
g = graph_from_data_frame(dt)
plot(g)

生成的图结构显示,节点1、2、3、6属于一个连通分量,节点4、5属于另一个连通分量。

运行clusters函数的结果:

> clusters(g)$membership
1 2 4 6 3 5 
1 1 2 1 1 2

但我希望尽量减少第三方库的依赖,因此寻求使用data.table或Base R的高效操作,通过dt生成上述成员表output。我猜测这可能涉及dt的一系列自连接,但在多聚类的大规模数据上未能成功实现。


内容的提问来源于stack exchange,提问作者JDG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:57:36