Эта проблема была зарегистрирована на github примерно 6 месяцев назад, но с тех пор еще не исправлено Мне интересно, есть ли быстрое исправление, которое мне не хватает.
Я хочу объединить два графика на основе их имен:
g1 = igraph.Graph()
g2 = igraph.Graph()
# add vertices
g1.add_vertices(["A","B"])
g2.add_vertices(["B","C","D"])
for vertex in g1.vs:
print vertex.index
0
1
for vertex in g2.vs:
print vertex.index
0
1
2
Однако, когда я выполняю объединение, igraph использует идентификаторы вершин, а не имена, поэтому я получаю три вершины вместо четырех (если бы это было основано на именах). Я предполагаю, что поскольку B
имеет индекс 0
в g2
, он объединяется с A
из g1
. И аналогичным образом C
из g2
объединяется с B
из g1
.
g_union = igraph.Graph.union(g1,g2)
g_union.vs['name'] # of course
KeyError: 'Attribute does not exist'
for vertex in g_union.vs:
print vertex.index
0
1
2
Любая идея о том, как обойти эту проблему? Это возможно, так как это было сделано в R-реализации igraph.
getAnywhere(union.igraph)
, я получаю толькоA single object matching ‘union.igraph’ was found It was found in the following places registered S3 method for union from namespace igraph namespace:igraph with value function (..., byname = "auto") { .igraph.graph.union.or.intersection("R_igraph_union", ..., byname = byname, keep.all.vertices = TRUE) } <environment: namespace:igraph>
- person Antoine   schedule 08.02.2016