2016-07-18 44 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