Как разделить сетевой граф на верхние n компонентов? - PullRequest
0 голосов
/ 25 мая 2020

У меня отключенная сеть со множеством мелких компонентов. Я хотел бы оставить только те компоненты, которые по размеру превышают 75-й процентиль. При использовании разложения создается список сетей, которые нельзя отобразить как единое целое.

library(igraph)
set.seed(123)
g <- erdos.renyi.game(100, 0.02, directed = FALSE, loops = TRUE)

components(g)$csize
components <- which(components(g)$csize>=quantile(components(g)$csize,.75))
g_final <- igraph::decompose(g, max.comps =  length(components), min.vertices = 2)

1 Ответ

0 голосов
/ 25 мая 2020

Я думаю, что вы действительно хотите использовать induced_subgraph.

Мне очень не нравится, что вы использовали имя компонентов функции как имя переменной, поэтому я изменил его здесь на Компоненты .

Components <- which(components(g)$csize>=quantile(components(g)$csize,.75))
BigComp <-induced_subgraph(g, 
            which(components(g)$membership %in% Components))
plot(BigComp)

Subgraph of large components

...