2016-08-22 12 views
0

私はRには新しく、元のグラフから特定のノードを削除して得たグラフの隣接する頂点を計算しようとしています。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の隣接する頂点を見つけようとしていることを知らないという事実にあります。

助けてもらえますか?ありがとう。

答えて

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 

より良いアプローチは、しかし、インデックスを使用する代わりに、頂点にラベルを参照することであろう。

> vertex_of_interest <- V(h)[V(h)$label == 6] 
> neighbors(h, vertex_of_interest)$label 
[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 
が興味の頂点の隣人を取得するには、のように見えるようにコードを変更することができます
関連する問題