r - 从 igraph 中的特定集群中检索节点和边列表
问题描述
假设我在图中有以下集群:
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
推荐阅读
- python - 如何在python中的数据框中逐行查找值的索引并提取以下列的值
- java - 在测试中模拟 Logger 类
- robotframework - 在 ROBOT FRAMEWORK 的搜索框中输入随机值
- android - 禁用群组通知点击
- javascript - 我如何将这个 js 生成的 iframe 的高度调整为内容?
- flutter - Flutter:如何防止 Future 不必要地触发快照
- npm - NPM 仍然给出警告,npm audix 修复不起作用
- android - Can’t execute test with more than 2 devices when using Appium grid
- iis-7 - IIS 服务器配置 - 网站性能问题
- angular - 模态组件 BsModalRef 未以角度绑定到 ngOnInit