Найти общее количество второй переменной, связанной с расстоянием маршрута от get.shortest.paths ()

Я нашел следующий вопрос Найти расстояние маршрута от get.shortest.paths ()) очень полезно, но хотелось бы сделать еще один шаг вперед. Я добавил один столбец во фрейм данных и хотел бы получить «общее расстояние», связанное с минимальным новым путё

Ниже код 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)

Решение Вопроса

Это дает вам края вдоль вашего оптимального пути:

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

Ваш ответ на вопрос