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
没有响应。为什么呢?
答案 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
我没有相同的结果。