2013-11-27 1 views
1

Я использую функцию «удалить вершины», и я обнаружил странное поведение в своих сетях. После прочтения документации igraph я обнаружил, что:удалять вершины при сохранении идентификаторов узлов

«delete.vertices удаляет указанные вершины из графика вместе с их смежными ребрами. Иды вершин не сохраняются».

Есть ли какие-либо меры для сохранения идентификаторов исходной сети?

ответ

2

Да, назначить атрибут вершины графику, возможно, атрибут name является лучшим. Они сохраняются после удаления.

g <- graph.ring(10) 
V(g)$name <- letters[1:10] 
g2 <- delete.vertices(g, c("a", "b", "f")) 
str(g2) 
# IGRAPH UN-- 7 5 -- Ring graph 
# + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c) 
# + edges (vertex names): 
# [1] c--d d--e g--h h--i i--j 

Если вы хотите сохранить исходные числовые идентификаторы вершин, а затем присвоить их имена:

gg <- graph.ring(10) 
V(gg)$name <- V(gg) 
gg2 <- delete.vertices(gg, c(1,2,6)) 
str(gg2) 
# IGRAPH UN-- 7 5 -- Ring graph 
# + attr: name (g/c), mutual (g/l), circular (g/l), name (v/n) 
# + edges (vertex names): 
# [1] 3-- 4 4-- 5 7-- 8 8-- 9 9--10 
+0

Спасибо за ваш ответ. Мой исходный граф ребро-лист с формой: 1,2 2,10 .... 1,15 Я хочу, чтобы сохранить номера, предоставляемые с этим списком, а именно: 1,10,2, 15 не новая именование или новая нумерация –

+0

Затем присвойте эти числа именам вершин в атрибуте 'name'. –

+0

Можно ли присвоить номер исходного узла как имя узла. Я забочусь об исходных идентификаторах графика. IOW, если у меня есть ребро «1 -> 2», то узел «1» должен иметь имя «1», а узел «2» должен иметь имя «2» –