get connected components using igraph in R

。_饼干妹妹 提交于 2019-11-27 04:32:13

问题


I would like to find all the connected components of a graph where the components have more than one element.

using the clusters gives the membership to different clusters and using cliques does not give connected components.

This is a follow up from

multiple intersection of lists in R

My main goal was to find all the groups of lists which have elements in common with each other.

Thanks in advance!


回答1:


You can use the results from clusters to subset your nodes according to the cluster size.

library(igraph)

# example graph
set.seed(1)
g <- erdos.renyi.game(20, 1/20)
V(g)$name <- letters[1:20]
par(mar=rep(0,4))
plot(g)

# get cluster
cl <- clusters(g)
cl
# $membership
# [1]  1  2  3  4  5  4  5  5  6  7  8  9 10  3  5 11  5  3 12  5
# 
# $csize
# [1] 1 1 3 2 6 1 1 1 1 1 1 1
# 
# $no
# [1] 12


# loop through to extract common vertices
lapply(seq_along(cl$csize)[cl$csize > 1], function(x) 
                                         V(g)$name[cl$membership %in% x])
# [[1]]
# [1] "c" "n" "r"
# 
# [[2]]
# [1] "d" "f"
# 
# [[3]]
# [1] "e" "g" "h" "o" "q" "t"


来源:https://stackoverflow.com/questions/30407769/get-connected-components-using-igraph-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!