从 get.shortest.paths() 查找路线的距离 [英] Find distance of route from get.shortest.paths()
本文介绍了从 get.shortest.paths() 查找路线的距离的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 R 中使用 igraph
包来做一些相当简单的事情:计算我的网络中两个节点之间的最短距离.有没有一种直接的方法来提取通过 get.shortest.paths()
计算的路径的距离?
I'm using the igraph
package in R to do something rather simple: Calculate the shortest distance between two nodes in my network. Is there a straightforward way to extract the distance of a path calculated via get.shortest.paths()
?
以下是一些可重现的代码,用于说明我的问题:
Here is some reproducible code that exemplifies my problem:
## reproducible code:
df2 = rbind(c(234,235,21.6),
c(234,326,11.0),
c(235,241,14.5),
c(326,241,8.2),
c(241,245,15.3),
c(234,245,38.46))
df2 = as.data.frame(df2)
names(df2) = c("start_id","end_id","newcost")
require(igraph)
g2 <- graph.data.frame(df2, directed=FALSE)
class(g2)
print(g2, e=TRUE, v=TRUE)
## calculate shortest path between vertex 234 and 245
(tmp2 = get.shortest.paths(g2, from='234', to='245',weights=E(g2)$newcost))
## print route vertices:
V(g2)[tmp2[[1]]]
## print distance of each route segment:
## ??
## calculate distance using 'newcost' weights:
## ?? sum( route segments ) ??
推荐答案
你可以使用 shortest.paths
函数,例如:
You can use shortest.paths
function,
e.g.:
# compute the min distances from '234' to all other vertices
tmp3 <- shortest.paths(g2,v='234',weights=E(g2)$newcost)
# print min distance from '234' to '245'
tmp3[1, which(V(g2)$name == '245')]
<小时>
算法计算出的距离为34.5 = 11 + 8.2 + 15.3
,如下图:
这篇关于从 get.shortest.paths() 查找路线的距离的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文