Как избежать столкновения имен объединений графов в igraph?

r igraph sna

314 просмотра

2 ответа

686 Репутация автора

Я пытаюсь объединить шесть графов в один граф, используя 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)

Как я могу гарантировать, что конечный объект графа не генерирует все эти дополнительные атрибуты?

Спасибо,

Тим

Автор: timothyjgraham Источник Размещён: 18.07.2016 05:07

Ответы (2)


2 плюса

540 Репутация автора

Я не думаю, что это возможно, используя graph.union(из документации: «объединение сохраняет атрибуты всех графиков. Все атрибуты графа, вершины и ребра копируются в результат. Если атрибут присутствует в нескольких графах и приведет к конфликту имен, затем этот атрибут переименовывается путем добавления суффиксов: _1, _2 и т. д. ").

В качестве обходного пути вы можете извлечь узлы и ребра из ваших шести графиков as_data_frame(graph, what = "both"), объединить / связать фреймы данных соответствующим образом, а затем преобразовать обратно, используя graph_from_data_frame. Не уверен, что это больше работы, чем удаление дополнительных атрибутов графа.

Автор: jac Размещён: 25.07.2016 10:43

1 плюс

348 Репутация автора

Решение

Вы можете увидеть мой вопрос и ответ . Я добавил один новый атрибут только для каждого объекта igraph. Затем графы были объединены с union()функцией и восстановлены исходные значения атрибута.

Автор: Nick Размещён: 26.03.2017 12:57
Вопросы из категории :
32x32