0

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

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

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

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

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

有没有办法c$membership根据集群大小排序,即 1 - 最大,2 - 第二大等?

4

1 回答 1

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)

于 2014-12-05T21:17:48.100 回答