添加节点并删除R igraph中的指定边

时间:2014-04-20 01:00:26

标签: r graph igraph

我正在R中学习igraph,并且有一个关于如何向图表添加节点并通过指定其两个节点来删除边缘的问题。这是我创建一个包含4个节点和一些边缘的图形的代码。

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边缘。

这是一个简单的方法吗?谢谢。

1 个答案:

答案 0 :(得分: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