我有一个连接如下的网络:
library(igraph)
network <- graph_from_literal(1--2,2--3,3--4,4--5,3--6,6--7,3--8,8--9)
并有每个段之间的距离
> data=data.frame(Origin=c(1,2,3,4,3,6,3,8), Destination=c(2,3,4,5,6,7,8,9), km=c(0.3,0.5,0.2,0.1,1,2,0.6,0.4))
> data
Origin Destination km
1 2 0.3
2 3 0.5
3 4 0.2
4 5 0.1
3 6 1.0
6 7 2.0
3 8 0.6
8 9 0.4
我想找到所有点之间的距离矩阵,我尝试使用
distMatrix <- shortest.paths(data, v=Origin(data), to=Destination(data))
但不能让它工作。
谢谢!
该distances()
函数将为您提供一个距离矩阵。通过设置边缘权重,距离矩阵将在计算中包含这些权重。在下面的代码中,我从您的数据集创建了图形data
,以便正确排序边:
library("igraph")
data = data.frame(Origin=c(1,2,3,4,3,6,3,8), Destination=c(2,3,4,5,6,7,8,9),
km=c(0.3,0.5,0.2,0.1,1,2,0.6,0.4))
g = graph_from_edgelist(cbind(data$Origin, data$Destination))
E(g)
#> + 8/8 edges from 7ad6d28:
#> [1] 1->2 2->3 3->4 4->5 3->6 6->7 3->8 8->9
E(g)$weight = data$km
distances(g)
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
#> [1,] 0.0 0.3 0.8 1.0 1.1 1.8 3.8 1.4 1.8
#> [2,] 0.3 0.0 0.5 0.7 0.8 1.5 3.5 1.1 1.5
#> [3,] 0.8 0.5 0.0 0.2 0.3 1.0 3.0 0.6 1.0
#> [4,] 1.0 0.7 0.2 0.0 0.1 1.2 3.2 0.8 1.2
#> [5,] 1.1 0.8 0.3 0.1 0.0 1.3 3.3 0.9 1.3
#> [6,] 1.8 1.5 1.0 1.2 1.3 0.0 2.0 1.6 2.0
#> [7,] 3.8 3.5 3.0 3.2 3.3 2.0 0.0 3.6 4.0
#> [8,] 1.4 1.1 0.6 0.8 0.9 1.6 3.6 0.0 0.4
#> [9,] 1.8 1.5 1.0 1.2 1.3 2.0 4.0 0.4 0.0
由reprex 包(v2.0.1)于 2021 年 9 月 6 日创建
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句