逐步删除igraph中的边缘

时间:2019-05-07 06:45:11

标签: r loops dplyr igraph

我在R中拥有大型网络。我使用igraph来绘制和分析图形。现在,我要计算shortest path distancesedge betweenness。然后,我想删除最高edge betweenness的边缘。之后,我想再次计算shortest path distance,并查看它在删除网络边缘时如何变化。

我有一个很好的工作代码,可以解决上述问题。我现在想做的是遍历整个edges_df并将各自的结果存储在某个地方。

代码如下:

links3 <- links %>% filter(from != "S510" & to != "S525")
net1<-graph_from_data_frame(d=links3, vertices = nodes_final,directed = FALSE) 
sp1<-shortest.paths(net1, v=V(net1) ,to=V(net1), mode="all")
sp1[is.infinite(sp1)]<-NA
eff<-sum(sp1, na.rm = TRUE)
btw3<-edge.betweenness(net1,e=E(net1))
links3$btw<-btw3
sum(is.na(sp1))

您能帮我将for loop集成到此代码中吗? 我想我需要一个输出向量来存储结果。但是,如何动态删除边缘,然后构建新图,依此类推?

我的实际方法是复制并粘贴上面的代码,然后手动更改相应的值。但是,这是一种糟糕的编码方式,因为它会产生很多基本相同的代码。

预期的结果将是一个for loop,它将对我的网络中的每个edge重复上述代码。

提前谢谢!

0 个答案:

没有答案