获得Rigraph中最大的连接组件

问题描述

如何获取图形最大部分的子图?

例如,我有一个g

size_components_g <-clusters(g,mode="weak")$csize
size_components_g
#1 2 3 10 25 2 2 1

max_size <- max(size_components_g)
max_size
#25

所以25是最大的大小。

我想提取具有这25个顶点的分量。我该怎么办?

解决方法

R包中任何函数的输出值的详细说明可以在其文档中找到。在这种情况下,igraph::clusters返回一个命名列表,其中存储了csize个簇的大小,而membership包含每个顶点所属的簇ID。

g <- igraph::sample_gnp(20,1/20)

components <- igraph::clusters(g,mode="weak")
biggest_cluster_id <- which.max(components$csize)

# ids
vert_ids <- V(g)[components$membership == biggest_cluster_id]

# subgraph
igraph::induced_subgraph(g,vert_ids)