R语言igraph包计算节点加权入度与加权出度
igraph计算加权入度、加权出度方法
直接用igraph内置的strength()函数即可实现,不需要手动遍历边求和,注意不要误用普通的degree()函数——这个函数默认统计的是边的条数,不会按边权重做累加。
实现代码
在你生成g2图对象的代码后,直接运行以下代码即可:
# 计算加权出度:mode参数设为"out",指定取边的weight属性作为权重 w_out <- strength(g2, mode = "out", weights = E(g2)$weight) # 计算加权入度:mode参数设为"in" w_in <- strength(g2, mode = "in", weights = E(g2)$weight) # 合并为数据框输出查看 degree_res <- data.frame( 节点名称 = V(g2)$name, 加权出度 = w_out, 加权入度 = w_in ) print(degree_res)
示例数据的计算结果
针对你提供的邻接矩阵,运行后得到的各节点数值如下,和手动计算的邻接矩阵行列和完全匹配:
- V0:加权出度300,加权入度300
- V2:加权出度100,加权入度0
- V3:加权出度200,加权入度0
- V4:加权出度30,加权入度120
- V6:加权出度30,加权入度120
- V10:加权出度360,加权入度180
- V12:加权出度0,加权入度300
注:
graph_from_adjacency_matrix()默认按「行是边起点、列是边终点」的规则解析邻接矩阵,和strength()的计算逻辑完全匹配,不需要额外调整图的方向参数。
内容的提问来源于stack exchange,提问作者Luong Nguyen Thanh
相关产品推荐
相关产品推荐

