首页 > 解决方案 > 如何过滤掉R中的小子图

问题描述

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

我怎样才能只保留具有最多顶点数的子图,同时删除其余的子图?在这种情况下,我想保留左侧的子图并删除右下角的 3 个顶点。谢谢!

在此处输入图像描述

标签: rgraphigraph

解决方案


给定

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

在此处输入图像描述

我们希望保留有 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)

在此处输入图像描述

这假设有一个最大的连通子图。否则将选择“第一个”。


推荐阅读