查找与get.shortest.paths()的路由距离相关的第二个变量的总和

时间:2012-05-24 15:02:11

标签: r routing dijkstra igraph

我发现以下问题(Find distance of route from get.shortest.paths())非常有用,但我们希望更进一步。我已经在数据框中添加了一列,我希望得到与min newcost路径相关的“总距离”。

我使用的igraph / R代码下面。

df2 = rbind(c(234,235,21.6,75),
c(234,326,11.0,35),
c(235,241,14.5,78),
c(326,241,8.2,98),
c(241,245,15.3,75),
c(234,245,38.46,65))

df2 = as.data.frame(df2)
names(df2) = c("start_id","end_id","newcost","distance")

df2

require(igraph)
g2 <- graph.data.frame(df2, directed=FALSE)

tkplot(g2)

(tmp2 = get.shortest.paths(g2, from='234', to='245',weights=E(g2)$newcost))

# This gives the shortest path based on $newcost
V(g2)[tmp2[[1]]]

我想回答的问题是与这条最短路径相关的距离是多少。最短路径的答案是34.5并且(手动计算)与该路径相关的距离是208.

了解如何自动获得此距离的一些提示。

谢谢! Jochem

# What is the distance related to the min newcost?

1 个答案:

答案 0 :(得分:1)

这为您提供了最佳路径的边缘:

optimal.path <- V(g2)[tmp2[[1]]] 
E(g2, path = optimal.path)
# Edge sequence:
#               
# [1] 326 -- 234
# [3] 241 -- 326
# [4] 245 -- 241

(请注意,它们不会沿着最佳路径显示在顺序中,但会显示在图表g2的定义中。)

这会给你总距离:

sum(E(g2, path = optimal.path)$distance)
# [1] 208