简体   繁体   中英

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

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?

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM