Вот потенциальное решение с использованием случайного графа.Вам нужно будет использовать 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](https://i.stack.imgur.com/WNCvL.png)
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](https://i.stack.imgur.com/skXye.png)