【发布时间】:2020-04-30 10:00:39
【问题描述】:
如果边属性大于某个值,我想插入一个新的顶点,然后分割边属性,例如:
library(igraph)
m <- matrix(c(1:5,2:6), nc = 2, byrow = F)
g <- graph_from_edgelist(m)
g <- set_edge_attr(g, name = "dists", value = c(5,8,10, 15, 7))
plot(g, edge.arrow.size = 0)
如果边属性“dists”> 10,我想添加一个新顶点,因为该图位于第 3 和第 4 个顶点之间,因为边属性为 15。
E(g)$dists
[1] 5 8 10 15 7
# psuedo code of what I want to do
for(i in E(g)) {
if (E(g)$dists[i] > 10) {
#add new node and split the edge weights
}
}
结果会是什么样子
m2 <- matrix(c(1:6,2:7), nc = 2, byrow = F)
g2 <- graph_from_edgelist(m2)
g2 <- set_edge_attr(g2, name = "dists", value = c(10,10,10, 7.5, 7.5, 10))
plot(g2, edge.arrow.size = 0)
在旧的第 3 和第 4 个顶点之间添加了一个新顶点,并且边缘属性 15 已在新边上拆分为 7.5 和 7.5。
E(g2)$dists
[1] 10.0 10.0 10.0 7.5 7.5 10.0
这是一个玩具示例,在我的数据中有 100 个顶点,并且将添加 10 个新顶点,所以我不能手动完成。非常感谢任何帮助。
【问题讨论】: