【发布时间】:2015-01-05 18:37:03
【问题描述】:
我正在尝试使用 igraph 包的 shortest.paths 计算图的局部效率。
根据定义,顶点 v 的局部效率是在 v 的所有直接邻居之间计算的“全局效率”(Latora & Machiori, 2001)。 我想出了下面的代码来提高全局和本地效率。但是,后者在其计算中包括目标顶点。在上面的论文中,他们说必须取出目标顶点。
#Global Efficiency (average inverse shortest paths between all u--v vertices)
eff<-1/(shortest.paths(my.graph))
eff[!is.finite(eff)]<-0
gl.eff<-mean(eff,na.rm=TRUE)
#Mean local efficiency (global efficiency for each node)
gn<-graph.neighborhood(my.graph,1) #list with subgraphs of directly connected graphs
names(gn)<-colnames(my.corr.matrix)
local.eff<-numeric(length(gn))
for (i in 1:length(gn)){
gn[[i]]<-gn[[i]] - vertex(V(gn[[i]])[grep(names(gn[i]),V(gn[[i]]))]) #doesn't match
eff.gn<-1/(shortest.paths(gn[[i]]))
eff.gn[!is.finite(gleff.gn)]<-0
eff.gn<-mean(eff.gn,na.rm=TRUE)
local.eff[i]<-gleff.gn
mean.local.eff<-mean(local.eff, na.rm=TRUE)
}
我正在尝试将列表名称(列表的每个元素都是一个子图)与该子图中的顶点名称进行匹配。我正在尝试使用“grep()”,但无法正确使用。有人可以帮我解决这个问题吗?
提前致谢,
【问题讨论】:
标签: r graph-theory igraph shortest-path