r - 如何使用 igraph 计算道路网络上城市的介数
问题描述
我的目标是用 igraph 计算道路网络上城市的中介中心性。首先,我使用 shp2graph 包中的 points2network 函数将城市节点放在道路网络上。然后我使用 nel2igraph 函数将网络转换为 igrah 数据。例如,网络是 g1。
set.seed(123)
D <- read.table(
sep=',',
header=T,
text=
'from,to, length
A,B,5
A,C,2
D,E,3
F,G,1
H,I,6
B,H,8
D,A,4
F,B,7
')
g1 <- graph.data.frame(D,directed=F)
plot(g1)
网络是这样的:
在这个网络中,E、C、B、I 是城市。其他节点是最初来自道路网络的点。当我将中间函数与 igraph 一起使用时,它将包括网络中的所有节点。但我只需要计算城市节点。城市的关系应该像 g2:
D <- read.table(
sep=',',
header=T,
text=
'from,to,length
E,C,9
E,B,12
B,C,7
B,I,14
')
g2 <- graph.data.frame(D,directed=F)
plot(g2)
有谁知道一种方法来计算城市的介数?谢谢!
解决方案
您可以尝试distances
如下
D2$length <- distances(
set_edge_attr(g1,
name = "weight",
value = D$length
)
)[as.matrix(D2)]
这使
> D2
from to length
1 E C 9
2 E B 12
3 B C 7
4 B I 14
更新
如果您期望顶点的介数,您可以尝试
> distances(graph.data.frame(D2, directed = FALSE)) <= 1
E B C I
E TRUE TRUE TRUE FALSE
B TRUE TRUE TRUE TRUE
C TRUE TRUE TRUE FALSE
I FALSE TRUE FALSE TRUE
数据
> dput(D2)
structure(list(from = c("E", "E", "B", "B"), to = c("C", "B",
"C", "I")), class = "data.frame", row.names = c(NA, -4L))
推荐阅读
- reactjs - React Native android 构建失败:app:mergeReleaseResources
- sql - EXECUTE 后的 SQL Server 事务计数指示 BEGIN 和 COMMIT 语句的数量不匹配
- xml - How to edit a file in Opencart 3.x with an extension?
- java - Any way to monitor a Java application's Function Flow?
- php - $variable after
没有显示在 php 的 echo 中 - shell - Universal copy command for Windows and Linux
- python - 正则表达式 - 查找每隔 n(固定)字符出现在另一个字符串中的字符串
- java - 单击片段时未打开自定义对话框?
- django-rest-framework - 如何使用 Django Rest 框架从外部 http 请求 json 和内部数据库创建视图
- jvm - jinfo 非默认 vm 标志是什么意思