2016-07-18 50 views
3

我試圖將六張圖合併成一張圖,使用igraph中的graph.union函數。如何避免圖中的聯合名稱衝突igraph?

每個圖都是定向,命名和二部分。每個圖形具有以下頂點和邊屬性:

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

然而,當我使用`graph.union」合併六個圖形,它會創建下列頂點和邊屬性:

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對象添加了一個新的屬性。然後將圖形與union()函數結合,並恢復屬性的原始值。

2

我不認爲這是可能使用graph.union(從文檔:「工會保留所有圖表的屬性所有圖表,頂點和邊屬性複製到結果。如果一個屬性出現在多個圖中並且會導致名稱衝突,那麼通過添加後綴:_1,_2等來重命名該屬性。「)。

作爲解決方法,您可以使用as_data_frame(graph, what = "both")從六個圖中提取節點和邊,相應地合併/綁定數據幀,然後使用graph_from_data_frame轉換回來。不知道這是否比刪除額外的圖形屬性更有效。

+0

最近的回覆,但我又遇到了這個問題,我可以確認你的解決方案的作品。謝謝。 – timothyjgraham