我对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 :(得分: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