我们可以使用以下公式求出每个顶点的相邻边的边权重:strength
的功能igraph
包裹。假设我们有一个如下图所示的图表
可重复的数据和代码
nodeA <- c("ID_1", "ID_2", "ID_3", "ID_4", "ID_5", "ID_16", "Node_30")
nodeB <- c("ID_11", "ID_3", "ID_4", "ID_5", "ID_3", "ID_11", "Node_3")
edge_weight <- c(0.5, 0.9, 0.8, 0.7, 0.5, 0.09, 0.7)
df_1 <- data.frame(nodeA, nodeB, edge_weight)
graph1 <- graph_from_data_frame(df_1, directed = FALSE)
E(graph2)$weight <- df_1$edge_weight
plot(graph1)
edge_strengts <- strength(graph1)
我得到的输出strength
函数是图的每个顶点的边权重之和。
ID_1 ID_2 ID_3 ID_4 ID_5 ID_16 Node_30 ID_11 Node_3
0.50 0.90 2.20 1.50 1.20 0.09 0.70 0.59 0.70
现在,我有一个边列表,我只想获取这些列表的边权重总和(而不是获取一个顶点的边总和)。为了获得更多说明,假设我有给定的边缘列表,
nodeA nodeB
1 ID_2 ID_4
2 ID_2 ID_5
3 ID_1 ID_16
我只想从给定图中获取上面列出的边的边总和(请注意,该图是无向的)。输出应该是这样的
nodeA nodeB some_of_weight
1 ID_2 ID_4 1.70
2 ID_2 ID_5 1.40
3 ID_1 ID_16 0.59
对于第一条边 (ID_2 to ID_4
)总和是1.70
(例如:ID_2 到 ID_3 = 0.9,ID_3 到 ID_4 = 0.8,因此,0.9 + 0.8 = 1.70)对于所有边列表依此类推。
你能告诉我,我该如何做这份工作吗?
一条边的多条路径
该图可以包含多个边路径(即,对于一条边,我们可以有 1 个或多个不同的路径)。说吧,我们可以走了ID_3 to ID_4
有两种方式(i)ID_3 - ID_2 - ID_4(总路径权重为2.4)和(ii)ID_3 - ID_5 - ID_4(总路径权重为1.5)。在这种情况下,我想取最大路径权重。
多路径的可重复数据
nodeA <- c("ID_1", "ID_2", "ID_4", "ID_5", "ID_16", "Node_30", "ID_6", "ID_2")
nodeB <- c("ID_11", "ID_3", "ID_5", "ID_3", "ID_11", "Node_3", "ID_3", "ID_4")
edge_weight <- c(0.5, 0.9, 0.8, 0.7, 0.5, 0.09, 0.7, 1.5)