在 R 中使用 igraph 获取连接组件
get connected components using igraph in R
我想找到一个图的所有连通分量,其中的分量有多个元素。
使用 clusters
为不同的集群提供成员资格,使用 cliques
不提供连接组件。
这是
的跟进
我的主要目标是找到所有具有共同元素的列表组。
提前致谢!
您可以使用 components
的结果根据组件大小对节点进行子集化。
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 components
cl <- components(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"
我想找到一个图的所有连通分量,其中的分量有多个元素。
使用 clusters
为不同的集群提供成员资格,使用 cliques
不提供连接组件。
这是
的跟进我的主要目标是找到所有具有共同元素的列表组。
提前致谢!
您可以使用 components
的结果根据组件大小对节点进行子集化。
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 components
cl <- components(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"