Find total of second variable related to the distance of route from get.shortest.paths()

元气小坏坏 提交于 2019-12-01 11:54:06

问题


I found the following question ( Find distance of route from get.shortest.paths() ) very helpful, but would like to take it one step further. I have added one column to the data frame and I would like to get the "total distance" related to the min newcost path.

Below the igraph / R code that I used.

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]]]

The question that I would like to have answered is what is the distance related to this shortest path. The answer of the shortest path is 34.5 and (computed manually) the distance related to this path is 208.

Appreciate some hints on how to get this distance automatically.

Thanks! Jochem

# What is the distance related to the min newcost?

回答1:


This gives you the edges along your optimal path:

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

(note that they do not appear in the order along your optimal path, but as they appear in the definition of your graph g2.)

and this gives you the total distance:

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


来源:https://stackoverflow.com/questions/10740100/find-total-of-second-variable-related-to-the-distance-of-route-from-get-shortest

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!