Reputation: 3396
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?
Upvotes: 1
Views: 336
Reputation: 89097
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
Upvotes: 1