使用Igraph计算大型网络中各ego网络密度并匹配对应ID的方法
R语言计算有向网络ego本地密度并绑定节点ID解决方案
核心思路
make_ego_graph()返回的列表顺序与igraph对象的顶点序列V(g)完全一一对应,直接提取顶点的名称作为ID绑定密度值即可,不受ID是否连续的影响。
完整可运行代码
# 加载依赖包 library(igraph) library(dplyr) # 读入示例边表数据 df<-read.table(text="student_id alter 1 3 2 5 2 2 2 3 3 2 3 4 3 5 4 1 4 6 4 3 5 1 5 6 5 2 6 5 6 2 6 1 7 8 8 9 9 8 9 7 10 7 10 9 11 19 11 15 11 12 12 20 12 19 12 11 13 15 13 19 13 11 14 16 14 12 14 18 15 17 15 20 15 17 16 14 16 19 16 20 16 13 17 20 17 18 17 13 17 14 18 13 18 19 18 17 19 17 19 16 19 11 20 13 20 17 20 11 20 1", header = TRUE) # 构建有向图对象 g <- graph_from_data_frame(df, directed = TRUE) # 生成所有ego网络 egonet_list <- make_ego_graph(g) # 绑定ID与密度值,按student_id排序 result <- data.frame( student_id = as.integer(V(g)$name), egonet_density = sapply(egonet_list, graph.density) ) %>% arrange(student_id) # 查看输出结果 print(result, digits = 7)
输出说明
运行上述代码得到的result数据框和你给出的期望输出完全一致,包含student_id和对应egonet_density两列,自动适配不连续的节点ID场景。
内容的提问来源于stack exchange,提问作者L. Tucker
相关产品推荐
相关产品推荐

