我正在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表示属性edge(边缘的长度)。 我想在图上添加一个节点5。 该节点将在1和2之间。现在边1--2的长度为5.6。 节点5与节点1之间的距离为2.6,与节点2之间的距离为3.0。我想添加这两个边(1--5和2--5)。 我还需要通过告诉R删除节点1和节点2之间的边来删除1--2边。

这样做的简单方法是什么? 谢谢。

===============>>#1 票数: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)

在此处输入图片说明

  ask by Patrick Li translate from so

未解决问题?本站智能推荐: