按簇大小排序簇列表,R igraph

时间:2014-12-05 20:55:45

标签: r igraph sna

我有一个拥有数千个集群的网络(g),但我似乎无法弄清楚如何按大小排序。看起来Membership属性有点任意地对集群进行排序。例如:

c <- clusters(g)
c$membership
gs <- induced.subgraph(g, c$membership==1)

这确实会给我最大的群集,但如果我尝试

gs <- induced.subgraph(g, c$membership==2)

它没有给我第二大的集群,但却是一个恰好在列表中排名第二的任意集群。

是否可以根据群集大小订购c$membership,即1 - 最大,2 - 秒等?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

# largest subgraph
gs <- induced.subgraph(g, c$membership==order(-c$csize)[1])
# second largest subgraph
gs <- induced.subgraph(g, c$membership==order(-c$csize)[2])
# etc...

这是一个有效的例子。

library(igraph) 
g <- graph.full(5) %du% graph.full(4) %du% graph.full(3)
set.seed(1)  # for reproducible plots
par(mar=c(0,0,0,0),mfrow=c(1,2))
plot(g)
c <- clusters(g)
gs <- induced.subgraph(g, c$membership==order(-c$csize)[1])
plot(gs)