2017-01-15 2 views
1

Как я могу получить доступ к вершинам 3-х связанных компонент диаграммы в igraph?igraph получить идентификаторы подключенных компонентов

c <- igraph::components(g, mode = 'weak') 
which(c$membership == which.max(c$csize)) 

даст наибольший и

which(c$membership == which.max(c$csize-1)) 

тот же результат, как c$csize-1 будет просто вычесть -1 из всех значений.

ответ

2

Вы можете использовать order для сортировки и выяснить членство из топ-3 крупнейших кластеров и использовать %in%, чтобы проверить, если вершины находятся в пределах одного из них:

which(c$membership %in% order(c$csize, decreasing = TRUE)[1:3]) 

  • order(c$csize, decreasing = TRUE) дает индекс (что соответствует идентификатору кластера), который сортирует size в порядке убывания;
  • c$membership содержит идентификатор кластера для всех вершин;
  • использовать %in%, чтобы проверить, находятся ли идентификаторы кластера в тройке лидеров;
1

Вы можете извлечь верхние 3 (с точки зрения размера) компоненты с помощью tail, а затем перебрать эти значения, чтобы получить элементы компонента.

top3 <- which(c$csize %in% tail(sort(c$csize),3)) 
sapply(top3, function(x) which(c$membership == x)) 
Смежные вопросы