Упорядочивание списка кластеров по размеру кластера, R igraph

У меня есть сеть (g) с тысячами кластеров, однако я не могу понять, как упорядочить их по размеру. Похоже, что атрибут членства сортирует кластеры несколько произвольно. Например:

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

Это действительно даст мне самый большой кластер, но если я попытаюсь

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

Это дает мне не второй по величине кластер, а произвольный кластер, который оказывается вторым в списке.

Есть ли способ упорядочить c$membership в соответствии с размером кластера, т. е. 1 – самый большой, 2 – второй по величине и т. д.?


person Zlo    schedule 05.12.2014    source источник


Ответы (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)

person jlhoward    schedule 05.12.2014