我正在尝试使用igraph中的graph.union
函数将六个图表合并为一个图表。
每个图都是定向的,命名的和二分的。每个图形都具有以下顶点和边缘属性:
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)
如何确保最终的图形对象不会生成所有这些附加属性?
谢谢,
添
答案 0 :(得分:2)
我认为不可能使用graph.union
(来自文档:" union保留所有图形的属性。所有图形,顶点和边缘属性都复制到如果某个属性存在于多个图形中并导致名称冲突,则通过添加后缀重命名此属性:_1,_2等。")。
作为一种解决方法,您可以使用as_data_frame(graph, what = "both")
从六个图中提取节点和边,相应地合并/绑定数据框,然后使用graph_from_data_frame
转换回来。不确定这是否比删除额外的图形属性更有效。
答案 1 :(得分:1)
您可以看到我的question and answer。我只为每个igraph对象添加了一个新属性。然后将图形与union()
函数联合,并恢复属性的原始值。