2016-07-18 5 views
3

igraphでgraph.union関数を使用して、6つのグラフを1つのグラフにマージしようとしています。igraphでグラフのユニオン名の衝突を避けるには?

各グラフは、指名され、名前が付けられ、二部構成です。各グラフには、次の頂点およびエッジ属性た:

name (v/c), type (v/c), label (v/c), id (v/c), edgeType (e/c), timestamp (e/c)

しかし、私は `graph.union」を使用して6つのグラフをマージするとき、それは次の頂点を作成し、エッジ属性:

attr: type_1 (v/c), type_2 (v/c), type_3 (v/c), type_4 (v/c), type_5 (v/c), type_6 (v/c), label_1 (v/c), label_2 (v/c), | label_3 (v/c), label_4 (v/c), label_5 (v/c), label_6 (v/c), id_1 (v/c), id_2 (v/c), id_3 (v/c), id_4 (v/c), id_5 (v/c), | id_6 (v/c), name (v/c), edgeType_1 (e/c), edgeType_2 (e/c), edgeType_3 (e/c), edgeType_4 (e/c), edgeType_5 (e/c), | edgeType_6 (e/c), timestamp_1 (e/c), timestamp_2 (e/c), timestamp_3 (e/c), timestamp_4 (e/c), timestamp_5 (e/c), | timestamp_6 (e/c)

最終的なグラフオブジェクトがこれらの追加属性をすべて生成しないようにするにはどうすればよいですか?

おかげで、

ティム

答えて

1

私のquestion and answerを見ることができます。各igraphオブジェクトに1つの新しい属性を追加しました。その後、グラフはunion()関数で結合され、属性の元の値が復元されました。

2

は、私は、ドキュメントから(それがgraph.unionを使用して可能だとは思わない:「組合はすべてのグラフの属性を保持してすべてのグラフ、頂点とエッジの属性が結果にコピーされます。属性が複数のグラフに存在し、名前の衝突が発生した場合は、この属性に_1、_2などのサフィックスを付けて名前を変更します)。

回避策として、as_data_frame(graph, what = "both")を使用して6つのグラフからノードとエッジを抽出し、それに応じてデータフレームをマージ/バインドしてからgraph_from_data_frameを使用して戻すことができます。追加のグラフ属性を削除するよりも多くの作業が必要かどうかは不明です。

+0

遅れて返信しましたが、私はこの問題に再び遭遇しました。あなたのソリューションの動作を確認できます。ありがとう。 – timothyjgraham

関連する問題