手伝っていただけませんか?
私は生態系の相互作用に取り組んでおり、それらのいくつかは多層ネットワーク(正確には多重化) としてモデル化されています。
この種のデータを R のパッケージigraphに入力する最良の方法は、エッジ リストとノード リストを使用することです。残念ながら、私の共同研究者はデータをそのように整理したことはなく、むしろ発生行列(二部ネットワーク) として整理しています。
私は常に、それらの行列を同じ次元で正確に整理し、行と列のラベルの順序を同じにして、簡単に組み合わせることができるようにするよう常に依頼しています。
これらの行列が手元にあるので、次の手順に基づいて長いコードを実行します。
2 つ以上の発生行列を R に読み込みます。
それらのエッジと頂点のリストを抽出します。
エッジ タイプに関する情報を各エッジ リストに追加します。
各頂点リストに頂点クラスに関する情報を追加します。
これらのエッジ リストと頂点リストを別々にマージします。
これらのマージされたリストを igraph に読み取って、多層グラフを作成します。
もっと簡単な解決策を探しています。関数unionを使用してみましたが、エッジの種類に関する情報を保持せずに、グラフとそのエッジをマージします。乱数行列を使用したこの例で何が起こるかを見てください。
number <- seq(1:10)
row <- "row"
rowlabels <- paste(row, number, sep = "")
column <- "col"
columnlabels <- paste(column, number, sep = "")
matrix1 <- matrix(data = rbinom(100,size=1,prob=0.5), nrow = 10, ncol = 10,
dimnames = list(rowlabels, columnlabels))
matrix2 <- matrix(data = rbinom(100,size=1,prob=0.5), nrow = 10, ncol = 10,
dimnames = list(rowlabels, columnlabels))
graph1 <- graph_from_incidence_matrix(matrix1, directed = F)
graph2 <- graph_from_incidence_matrix(matrix2, directed = F)
E(graph1)$type = "layer1"
E(graph2)$type = "layer2"
graph_multi <- union(graph1, graph2)
graph_multi
E(graph_multi)$type
igraphで複数の入射行列を組み合わせて多層グラフを作成する簡単な方法はありますか?
どうもありがとうございました!