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
没有响应。为什么?
这是 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 相同的代码。
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
我没有同样的结果。
它对我有用(在将 igraph 更新到 0.6-3 之后),给
> modularity(g,b)
[1] -0.05041913
您可以尝试关闭 R,更新 igraph,然后重新运行代码。