2013-02-27 109 views
4

我試圖刪除頂點與delete.vertices(graph ,vertex id)一個圖形,但我看到這個錯誤:」Cannot create iterator, Invalid vertex id, Invalid vertex id」如何刪除R中圖的頂點?

這是我的代碼:

graph<-read.graph(paste0("H:/graph.txt"),format="ncol",directed="TRUE") 
delete.vertices(graph,c(717527,61373)) 

717527和61373是我的頂點數量。

,這是圖:

vertices

我怎樣才能做到這一點?

回答

5

由於給定的頂點之一不在圖頂點列表中,您會得到該錯誤。一個建議嘗試使用igraph函數,一旦你熟悉它們,將它應用到你的自定義圖形。這裏演示:

library(igraph) 
g <- graph.ring(10) 
V(g) 
Vertex sequence: 
[1] 1 2 3 4 5 6 7 8 9 10 

現在我試着刪除現有的頂點:

delete.vertices(g, c(2,7,9)) 
IGRAPH U--- 7 4 -- Ring graph 
+ attr: name (g/c), mutual (g/x), circular (g/x) 

對於非現有的,我知道你的錯誤:

delete.vertices(g, c(20)) 

Error in delete.vertices(g, c(20)) : 
    At iterators.c:759 : Cannot create iterator, invalid vertex id, Invalid vertex id 
1

您正在使用的igraph?

read.graph函數可能會以字符串形式讀取頂點ID。在這種情況下,您可能需要:

delete.vertices(graph,c('717527','61373')) 

改爲。另外,delete.vertical返回一個新的圖形對象。如果想要查看後者顯示的更改,則要確保將結果存儲在圖表中。

graph<-read.graph(paste0("H:/graph.txt"),format="ncol",directed="TRUE") 
graph<-delete.vertices(graph,c('717527','61373'))