我有一个拥有数千个集群的网络(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 - 秒等?
答案 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)