Выбор кластеров по количеству узлов iGraph / R - PullRequest
0 голосов
/ 18 октября 2018

Есть ли способ выбрать подграф / подмножество, где кластеры имеют максимальное количество вершин?

По сути, я хочу сделать что-то вроде:

want <- components(X)$csize < 20  

Я думал о слиянии идентификаторов кластера из фрейма данных графа с узлом df, затем с использованием счетчика или чего-то подобного, чтобыустановить исходное значение df и снова вычислить фрейм графика.

1 Ответ

0 голосов
/ 18 октября 2018

Вот потенциальное решение с использованием случайного графа.Вам нужно будет использовать groups на components, чтобы определить, какие узлы принадлежат к каким компонентам , тогда вам нужно будет использовать length, чтобы определить, насколько велики компоненты:

set.seed(4321)
g <- sample_gnm(100, 40, F, F)
plot(g, vertex.size = 5, vertex.label = '')

The entire graph with all components

want <- g %>%
  components %>%
  groups %>%
  .[sapply(., length) > 3]

want обеспечит следующее:

$`1`
[1]  1 34 38 45 75

$`3`
 [1]   3  12  24  39  50  54  58  60  67  84  97  99 100

$`5`
[1]  5 35 37 41 44 53 65 90

Затем вы можете удалить всеузлы, которые не включены в want

newG <- g %>%
  {. - V(.)[! as.numeric(V(.)) %in% unlist(want)]}

plot(newG, vertex.size = 5, vertex.label = '')

enter image description here

...