【问题标题】:How to avoid graph union name clash in igraph?如何避免 igraph 中的图形联合名称冲突?
【发布时间】:2016-07-18 05:07:49
【问题描述】:

我正在尝试使用 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)

如何确保最终的图形对象不会生成所有这些附加属性?

谢谢,

提姆

【问题讨论】:

    标签: r igraph sna


    【解决方案1】:

    我认为不可能使用graph.union(来自文档:“联合保留所有图形的属性。所有图形、顶点和边属性都被复制到结果中。如果一个属性存在于多个图形中并且会导致名称冲突,然后通过添加后缀重命名此属性:_1、_2 等”)。

    作为一种解决方法,您可以使用as_data_frame(graph, what = "both") 从六个图中提取节点和边,相应地合并/绑定数据帧,然后使用graph_from_data_frame 转换回来。不确定这是否比删除额外的图形属性更有效。

    【讨论】:

    • 回复晚了,但我又遇到了这个问题,我可以确认您的解决方案有效。谢谢。
    【解决方案2】:

    你可以看到我的question and answer。我只为每个 igraph 对象添加了一个新属性。然后将图形与union() 函数合并,并恢复属性的原始值。

    【讨论】:

      最近更新 更多