decompose.graph
、コミュニティ検出機能igraph
およびlapply
を使用していただきありがとうございます。igraphを使用する:decompose.graph()によって構築されたコンポーネントのコミュニティメンバシップ
私は頂点属性 "label"とエッジ属性 "weight"を持つigraphオブジェクトGを持っています。私は、igraphとは異なる機能を使ってコミュニティメンバーシップを計算したいと思います。簡略化のため、walktrap.community
としましょう。
このグラフが接続されていない、それは私が
G.
接続されたコンポーネントに にそれを分解し、各コンポーネントにwalktrap.community
を実行し、その後元のグラフに、コミュニティメンバーシップの頂点属性を追加することを決めた理由は、私がやっています現在は次のようになっています
comps <- decompose.graph(G,min.vertices=2)
communities <- lapply(comps,walktrap.community)
私が理解できない構造でリストオブジェクトを取得するので、この時点で私は立ち往生します。 decompose.graph
のドキュメントはリストオブジェクトを返すことを伝えています。結果にlapply
を使用すると、私は完全に混乱します。さらに、コミュニティには各コンポーネントの0から番号が付けられており、weights
パラメータをwalktrap.community
関数にどのように供給するのか分かりません。
それは部品がなければ、私は次のように行われているでしょう:
wt <- walktrap.community(G, modularity=TRUE, weights=E(G)$weight)
wmemb <- community.to.membership(G, wt$merges,steps=which.max(wt$modularity)-1)
V(G)$"walktrap" <- wmemb$membership
は、誰も私がこの問題を解決してくださいもらえますか?または、いくつかの 情報/リンクを提供できますか?
このような迅速で正確な返信に感謝します。私は最初のオプションがはるかに読みやすくなっていることに同意しますが、私はまだ "* apply"を使用するのが快適ではないと感じています。私は、元のグラフに結果を割り当てることについて質問をしています。「\t(j in seq_along(Vs comps [[i]]) - )){ \t(for i in seq_along(comps) \t cur < - V(comps [[i]])[j] $ id \t \t [V(G)$ id == cur] $ "walktrap" < - V(comps [[i]] )[j] $ "walktrap" \t} }ここで、 "id"は頂点集合の一意のラベルです。それを行う唯一の方法かどうか知っていますか? – npobedina