如何解决如何在 R igraph 中连接有向子图
我有一个方向加权图,它由两个或更多断开连接的子图(除了weight
之外还有一些属性)组成:
require(igraph)
df<-data.frame(from=c(1,2,4,5),to=c(2,3,5,6),weight=c(1,1,1),attr=c(0.1,0.1,0.1))
g<-graph_from_data_frame(df,directed=T)
我的最终目标是找到最短路径,但这只能对连通图进行。
因此,我需要将这两个子图与 3 到 4 之间的边连接起来,并且权重较大(可能是 vcount(g)
),因此最后我只有一个图。通常,顶点名称是定义方向(从小到大)的日期。可以存在多个间隙。
解决方法
在你的情况下,你可以这样做: (感谢 @ThomasIsCoding
的评论h <- add.edges(g,c("3","4"),weight = vcount(g))
,
如果你有一个以上的间隙(即两个以上的集群),你可以试试下面的代码
e <- c(sapply(decompose(g),function(x) names(V(x))[degree(x)==1]))
G <- g %>%
add.edges(e[2:(length(e)-1)],weight = vcount(g))
这样
> get.data.frame(G)
from to weight attr
1 1 2 1 0.1
2 2 3 1 0.1
3 4 5 1 0.1
4 5 6 1 0.1
5 7 8 1 0.1
6 8 9 1 0.1
7 3 4 9 NA
8 6 7 9 NA
数据
df <-
data.frame(
from = c(1,2,4,5,7,8),to = c(2,3,6,8,9),weight = c(1,1,1),attr = c(0.1,0.1,0.1)
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。