如何解决使用 igraph 将节点属性分配给边权重
我有一个指向“12”的有向图。我已经根据出度分布计算了所有节点的属性值。现在我无法将节点的属性值作为权重分配给它的边。在这方面的帮助将不胜感激..
请参阅此处附上的图表。
这些是我的示例代码。
nodes <- read.csv("test_nodes1.csv",header=T,as.is=T)
links <- read.csv("test_edge1.csv",as.is=T)
links <- links[order(links$from,links$to),]
G <- graph_from_data_frame(d=links,vertices=nodes$id,directed=T)
V(G)$dist <- 1
for (i in V(G)$name) {
out_deg_i <- degree(G,i,mode = "out")
if (out_deg_i >1){
V(G)[i]$dist = V(G)[i]$dist/out_deg_i
}
else{
V(G)[i]$dist =1
}
}
V(G)$name
V(G)$dist
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13"
[1] 1.0 0.5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.5 1.0 1.0 1.0
解决方法
我猜你需要 tail_of
如下
G <- set_edge_attr(
G,name = "wt",value = 1 / pmax(degree(G,mode = "out"),1)[names(tail_of(G,E(G)))]
)
您可以通过
查看结果plot(G,edge.label = E(G)$wt)
数据
G <- graph_from_data_frame(
data.frame(
from = c(1,2,4,4),to = c(4,3,5,6)
)
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。