关于community.to.membership函数

时间:2012-12-28 08:25:33

标签: r igraph

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没有响应。为什么呢?

3 个答案:

答案 0 :(得分:5)

这是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不是确定性的,并且您没有设置随机种子。

Btw.2。 igraph版本0.6-1和0.6-3(和0.6-x)之间存在 no 真正的区别,破折号后面的数字只是内部版本号。该软件包由于技术原因而重建,版本0.6-3包含与0.6-1相同的代码。

答案 1 :(得分:0)

它适用于我(在将igraph改为0.6-3之后),给予

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

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

答案 2 :(得分:0)

与@Hnery

相同版本的igraph我遇到同样的问题

这里是我安装的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

我没有相同的结果。