假设我在图形中具有以下群集:
library("igraph")
set.seed(3)
g <- barabasi.game(20, m=2, directed=FALSE)
eb <- cluster_edge_betweenness(g)
plot(eb, g, layout=layout_with_fr)
是否有可能检索节点的列表或数据帧以及包含数字5的群集的相应边缘?存在于多个群集(例如8或14)中的节点怎么办?
谢谢!
我不知道可以自动执行此操作的任何方法。但是,您可以轻松地手动完成此操作。
我不确定“在多个群集中存在”是什么意思。从图中节点的颜色以及中间性聚类的输出可以看出,聚类成员资格是互斥的。有6组:
print(eb)
IGRAPH clustering edge betweenness, groups: 6, mod: 0.26
+ groups:
$`1`
[1] 1 2 3 14 15
$`2`
[1] 4 5 6 10 19
$`3`
[1] 7 11 16
$`4`
+ ... omitted several groups/vertices
eb$membership
[1] 1 1 1 2 2 2 3 4 5 2 3 4 6 1 1 3 4 4 2 4
# extract all edges of the graph
d <- igraph::as_data_frame(g, what="edges")
# get membership of interested node
memb <- eb$membership[V(g)==5]
memb
[1] 2
# get all nodes with the same membership
memb_nodes <- V(g)[eb$membership==memb]
memb_nodes
+ 5/20 vertices, from 293a69d:
[1] 4 5 6 10 19
# subset
d <- d[d$from %in% memb_nodes & d$to %in% memb_nodes, ]
d
from to
9 4 6
16 4 10
17 5 10
34 4 19
35 5 19