lapply for edge_connectivity 在图形对象中

lapply for edge_connectivity in a graph object

我有一个我想要遍历的图形对象,因此我可以使用 igraph 中的 edge_connectivity 函数获取每个节点的边连接读数。输出应如下所示:

edge_connectivity(di, "10001", "12256")
[1] 2
edge_connectivity(di, "10001", "8496")
[1] 2
edge_connectivity(di, "10001", "8558")
[1] 2

*节点名是随机生成的整数

不过,我无法使 lapply 功能正常工作。这是我一直在尝试使用的代码:

library(igraph)
digraph<-read.csv('1999.csv')
di<-graph.data.frame(digraph) 
edge_connectivity<-lapply(di, function(x) x)

我知道这是不对的。应该是这样的: connectivity<-lapply(V(di), function(x) length(edge_connectivity(di)) ?

但这也不正确,因为 edge_connectivity 函数必须具有源和目标参数,或者在整个网络中留空。就是不知道怎么让它自己遍历网络。

因为你想获得网络中每对节点的边缘连通性分数,你需要找到所有对的组合并将其与函数 edge_connectivity 一起传递给 sapply .我想你想要 sapply 在这里(return 是一个向量)而不是 lapply(return 是一个列表)。两种情况下的语法都相同。

使用随机图 'g',找到所有可能的 combn 节点对。这将创建一个 Nx2 矩阵,其中 N 是可能对的总数。

g <- sample_gnp(25,0.5,directed=T)a
c <- combn(V(g),2)

告诉 sapply 对可能的节点对数(例如 c 中的列数)应用 ege_connectivity 函数。索引每列中的第一行和第二行以获取该对中的每个节点。

sapply(1:ncol(c), function(x) edge_connectivity(g,c[1,x],c[2,x]))

这将 return 图中每对节点的连通性得分。请注意 sapply 函数的语法。该函数应用于第一个参数 (1:ncol(c)) 中的每个元素,其中元素替换函数中 x 的每个实例。