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

R: Calculating adjacent vertex after deletion of nodes

我是 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)

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

plot(h)

如果我计算:

adjacent_vertices(h,6)= 5

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

有人可以帮忙吗。谢谢。

这里的问题是,当您删除顶点时,剩余顶点的索引会向下移动到 [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

但是,更好的方法是引用顶点 labels 而不是使用索引:

> 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