2 つの質問があります。
1- igraph を使用して R で重複するコミュニティ構造を発見できるかどうか疑問に思っていましたか?
2- LinkComm パッケージが同様のことを実行できることがわかりました (onverlapping コミュニティ構造を見つける) が、igraph ネットワークを受け入れることはできません。LinkComm 機能を igraph グラフに適用することは可能ですか?
前もって感謝します、
linkcomm
オブジェクトでパッケージを使用するための (やや汚い) トリックを次に示しigraph
ます。問題はlinkcomm
、igraph0
パッケージを使用し、igraph
オブジェクトのフィールドを直接使用することです。これはお勧めしません。彼らのアプローチはパッケージでは機能しますが、igraph グラフのインデックス演算子を定義するため、パッケージigraph0
では機能しません。igraph
igraph
[[
とにかく、以下はlinkcomm
パッケージから関数を上書きするだけです。パッケージバージョン 1.0-6 (2011-05-27) で動作しますが、それ以外のバージョンではほぼ確実に動作しません。適切な修正はlinkcomm
、その作成者によるパッケージの更新です。
library(linkcomm)
# This will result a long warning about masked objects, because igraph
# defines almost all names igraph0 defines, and linkcomm loads igraph0.
# But we are fine if we load igraph after linkcomm, because by default
# the igraph functions will be used
library(igraph)
# Modify the function from the linkcomm package, we create a new
# function called 'lc'
lc <- as.list(getLinkCommunities)
lc[[11]][[10]][[3]] <- call("get.edgelist", quote(x), names=FALSE)
lc <- as.function(lc)
# Get some test data
karate <- nexus.get("karate")
# Use the newly defined 'lc' function on the test data
karcomm <- lc(get.data.frame(karate), check.duplicates=FALSE)