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を0.6-3に更新した後)、
> modularity(g,b)
[1] -0.05041913
Rを閉じて、igraphを更新してから、コードを再実行してみてください。
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
同じ結果は得られません。