3
library(igraph)
g=graph.famous("Zachary")
c=walktrap.community(g)
a=community.to.membership(g,c$merges,steps=2)
b=a$membership
modularity(g,b)

运行modularity(g,b)函数时,R没有响应。为什么?

4

3 回答 3

6

这是 igraph 中的一个错误。该community.to.membership函数返回一个从零开始的成员向量,并modularity期望一个从 1 开始的成员向量。

community.to.membership函数实际上已被弃用,cutat应改为使用该函数:

library(igraph)
set.seed(42)
g <- graph.famous("Zachary")
c <- walktrap.community(g)
b <- cutat(c, steps=2)
modularity(g, b)
# [1] -0.02621631

顺便提一句。您的示例不可重现,因为walktrap.community它不是确定性的,并且您没有设置随机种子。

顺便说一句。2。igraph 版本 0.6-1 和 0.6-3(和 0.6-x)之间没有真正的区别,破折号后面的数字只是内部版本号。由于技术原因,该包被重新构建,版本 0.6-3 包含与 0.6-1 相同的代码。

于 2013-01-06T03:58:47.913 回答
0

igraph我与@Hnery相同的版本有同样的问题

这是我安装的 igraph 版本:

subset(as.data.frame(installed.packages()) , Package == 'igraph', select =c('Package','Version'))
       Package Version
igraph  igraph   0.6-3

当我像这样替换成员向量 (b) 中的 0 时,它会起作用:

 b[b==0] <- 1
> modularity(g,b)
[1] -0.04191321

我没有同样的结果。

于 2012-12-28T10:09:56.227 回答
0

它对我有用(在将 igraph 更新到 0.6-3 之后),给

> modularity(g,b)
[1] -0.05041913

您可以尝试关闭 R,更新 igraph,然后重新运行代码。

于 2012-12-28T09:17:42.613 回答