我有一个我想要遍历的图形对象,因此我可以在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函数必须具有源和目标参数,或者对于整个网络保持空白。我只是不知道如何让它自己遍历网络。
答案 0 :(得分:1)
由于您希望获得网络中每对节点的边缘连接分数,您需要找到所有对的组合,并将其与函数sapply
一起传递给edge_connectivity
。我想你想要sapply
(返回一个向量)而不是lapply
(返回一个列表)。在任何一种情况下,语法都是相同的。
使用随机图表&#39;,找到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
的每个实例。