R:删除节点后计算相邻顶点

时间:2016-08-22 14:41:45

标签: r igraph

我对R很新,并尝试计算图形的相邻顶点,这是从原始图形中删除某些节点而获得的。

但是,结果的输出与图表的图形不匹配。

例如:

library(igraph)

g <- make_ring(8)

g <- add_edges(g, c(1,2, 2,7, 3,6, 4,5, 8,2, 6,2))

V(g)$label <- 1:8

plot(g)

Plot of graph g

h <- delete.vertices(g, c(1,2))

plot(h)

enter image description here

如果我计算:

adjacent_vertices(h,6)= 5

但是,我希望输出为3,5,7,如图所示。问题在于它并不知道我试图找到标记为6的节点的相邻顶点。

请有人帮忙。谢谢。

1 个答案:

答案 0 :(得分:0)

这里的问题是当你删除顶点时,剩余顶点的索引向下移动到[0,6]:

> V(h)
+ 6/6 vertices:
[1] 1 2 3 4 5 6

要使用原始顶点名称查找邻居,您可以简单地将值除去删除的顶点数,例如:

> neighbors(h, 6 - offset) + offset
+ 3/6 vertices:
[1] 3 5 7

然而,更好的方法是引用顶点标签而不是使用索引:

> V(g)$label
[1] 1 2 3 4 5 6 7 8
> V(h)$label
[1] 3 4 5 6 7 8

> V(h)[V(h)$label == 6]
+ 1/6 vertex:
[1] 4

要获取感兴趣的顶点的邻居,可以将代码修改为:

> vertex_of_interest <- V(h)[V(h)$label == 6]
> neighbors(h, vertex_of_interest)$label
[1] 3 5 7