2014-04-20 29 views
2

我學習中的R的igraph一個指定的邊緣,並且對如何在節點添加到圖表,並通過指定兩個節點刪除邊緣的問題。這裏是我的代碼來創建一個有4個節點和一些邊的圖。添加一個節點,並刪除R中的igraph

g <- as.data.frame(cbind(matrix(c(1, 2, 1, 3, 1, 4, 3, 4, 2, 4), byrow = TRUE, ncol = 2), c(5.6, 2.7, 3.5, 1.8, 2.1))) 
names(g) <- c("start", "end", "length") 
g <- graph.data.frame(g, directed = FALSE) 
plot(g) 

enter image description here

這裏length表示該屬性的邊(邊緣的長度)。我想添加一個節點5到圖中。該節點將在1和2之間。現在邊1--2的長度是5.6。節點5與節點1的距離爲2.6,節點2的距離爲3.0。我想添加這兩個邊(1--5和2-5)。我還需要告訴R鍵刪除節點1和節點2

什麼是這樣做的一個簡單的方法之間的邊緣去除1--2邊緣?謝謝。

回答

5

是這樣的:

library(igraph) 

g <- as.data.frame(cbind(matrix(c(1, 2, 1, 3, 1, 4, 3, 4, 2, 4), 
           byrow = TRUE, ncol = 2), 
         c(5.6, 2.7, 3.5, 1.8, 2.1))) 
names(g) <- c("start", "end", "length") 

g <- graph.data.frame(g, directed = FALSE) 

# add node 5 
g <- g + vertices(5) 

# delete edge 1-2 
g["1", "2"] <- NULL 

# add new edges with length attribute 
g <- g + edge("1", "5", attr=list(length=2.6)) 
g <- g + edge("2", "5", attr=list(length=1.3)) 

plot(g) 

enter image description here

+0

如果我使用'克< - delete.edges(G,C( 「1」, 「2」))',兩個邊緣(1-- 2和1--3)都被刪除。確實是 –

+1

。道歉。我認爲我所做的修改應該做到這一點(改變「刪除」行) – hrbrmstr

+0

這很好。謝謝。順便說一下,如果我想使用'delete.edges'來刪除那條邊,我應該使用哪些代碼? –