我在R中拥有大型网络。我使用igraph来绘制和分析图形。现在,我要计算shortest path distances
和edge 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
重复上述代码。
提前谢谢!