Документация, к которой я обращаюсь с сайта r-forge, гласит: «Вершины и ребра имеют числовые идентификаторы вершин в igraph. Идентификаторы вершин всегда последовательны и начинаются с нуля».Поэтому вам нужно вычесть 1 из этого вектора перед отправкой в функцию графа.В противном случае вы получите несвязанную вершину «0».Общий способ избежать несвязанной вершины «0» состоит в том, чтобы вычесть минимум из вектора.
> g <- graph( c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2) -1)
> g
Vertices: 5
Edges: 8
Directed: TRUE
Edges:
[0] 0 -> 0
[1] 0 -> 3
[2] 1 -> 0
[3] 1 -> 1
[4] 2 -> 0
[5] 2 -> 3
[6] 4 -> 0
[7] 4 -> 1
> g2 <- graph( c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2) )
> g2 <- delete.vertices(g2, 0)
> g2
Vertices: 5
Edges: 8
Directed: TRUE
Edges:
[0] 0 -> 0
[1] 0 -> 3
[2] 1 -> 0
[3] 1 -> 1
[4] 2 -> 0
[5] 2 -> 3
[6] 4 -> 0
[7] 4 -> 1
> all.equal(g,g2)
[1] TRUE
Так что я подозреваю, что ваш вопрос действительно может быть «Как я могу маркировать вершины, используя мои собственные правила?»,Попробуйте это:
g <- graph( c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2) -1)
plot(g, vertex.label=1:5)
В первом разделе документов также написано:
Домашняя страница igraph на http://igraph.sourceforge.net. См. Особенно раздел документации.Присоединяйтесь к списку рассылки igraph-help, если у вас есть вопросы или комментарии.