【发布时间】:2017-06-24 09:25:34
【问题描述】:
我在 igraph 中有一个大图(实际上是几个)——大约有 100,000 个顶点——每个顶点都有一个属性,它是 true 或 false。对于每个顶点,我想计算直接连接到它的顶点中有多少具有该属性。我目前的解决方案是以下函数,它以图形为参数。
attrcount <- function(g) {
nb <- neighborhood(g,order=1)
return(sapply(nb,function(x) {sum(V(g)$attr[x]}))
}
这会返回一个计数向量,对于具有该属性的顶点,该向量偏移 1,但我可以轻松调整它。
问题在于它运行得非常慢,而且似乎应该有一种快速的方法来做到这一点,因为例如,使用degree(g) 计算每个顶点的度数实际上是即时的。
我这样做是不是很愚蠢?
例如,假设这是我们的图表。
set.seed(42)
g <- erdos.renyi.game(169081, 178058, type="gnm")
V(g)$att <- as.logical(rbinom(vcount(g), 1, 0.5))
【问题讨论】: