2014-04-20 99 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'来删除那条边,我应该使用哪些代码? –