我正在学习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)

这里,length表示边缘的属性(边缘的长度)。我想在图中添加一个节点5。这个节点介于1到2之间,现在边缘1-2的长度是5.6.节点5与节点1的距离为2.6,与节点2的距离为3.0,我想添加这两个边(1-5和2-5)。我还需要删除1-2边,告诉R删除节点1和节点2之间的边。
做这件事的简单方法是什么?谢谢。
发布于 2014-04-20 02:30:44
类似于:
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)

https://stackoverflow.com/questions/23177304
复制相似问题