如何在R中过滤出小的子图

时间:2018-11-20 03:12:22

标签: r graph igraph

假设我有一个带有多个子图的网络。

在除去其余顶点时,如何只保留具有最多顶点数的子图?在这种情况下,我想将子图保持在左侧,并删除右下角的三个顶点。谢谢!

enter image description here

1 个答案:

答案 0 :(得分:4)

给予

set.seed(1)
g <- sample_gnp(20, 1 / 20)
plot(g)

enter image description here

我们希望子图具有6个顶点。使用

(clu <- components(g))
# $membership
#  [1]  1  2  3  4  5  4  5  5  6  7  8  9 10  3  5 11  5  3 12  5

# $csize
#  [1] 1 1 3 2 6 1 1 1 1 1 1 1

# $no
# [1] 12
gMax <- induced_subgraph(g, V(g)[clu$membership == which.max(clu$csize)])

然后我们得到

plot(gMax)

enter image description here

这假设存在一个最大的连接子图。否则,将选择“第一个”。