2014-12-05 244 views
0

我有一个拥有数千个群集的网络(g),但我似乎无法弄清楚如何按大小排序。它看起来像成员资格属性有点任意排序群集。例如:按群集大小排序群集列表R igraph

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

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

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

它不给我的第二大产业集群,但出现这种情况是第二个任意集群在列表中。

有没有办法根据簇大小订购c$membership,即1 - 最大,2 - 最大等?

回答

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) 

+0

感谢,这有助于! – Zlo 2014-12-05 21:28:32