我有一个要遍历的图形对象,因此可以使用中的edge_connectivity
函数获取每个节点的边缘连通性读数igraph
。输出应如下所示:
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函数必须具有源参数和目标参数,或者对于整个网络都为空。我只是不知道如何使它自己遍历网络。
由于要获取网络中每对节点的边缘连接性得分,因此需要找到所有对对的组合,并将其sapply
与函数一起传递给edge_connectivity
。我认为您想要sapply
这里(返回向量)而不是lapply
(返回列表)。两种情况下的语法都是相同的。
使用随机图'g',找到所有可能的节点对combn
。这将创建一个Nx2矩阵,其中N是可能对的总数。
g <- sample_gnp(25,0.5,directed=T)a
c <- combn(V(g),2)
告诉sapply
将ege_connectivity
函数应用于可能的节点对数(例如,c中的列数)。索引每列中的第一行和第二行,以获取该对中的每个节点。
sapply(1:ncol(c), function(x) edge_connectivity(g,c[1,x],c[2,x]))
这将返回图中每对节点的连接分数。注意sapply
函数的语法。该函数将应用于第一个参数(1:ncol(c)
)中的每个元素,其中该元素替换x
函数中的每个实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句