iGraph R包bug?

问题描述 投票:2回答:1

当执行下面的简单代码以向网络中的节点3到节点5的边缘添加权重并查看边缘权重时,它在那里显示NA值。

g<-make_empty_graph(directed = F)

g<-add.vertices(g,c(10))

g<-add_edges(g,c(3,5))
g<-set_edge_attr(graph = g,name="weight",index = c(3,5),value = 0.3)

E(g)$weight
plot(g)

执行后我得到了这个

> E(g)$weight
[1] NA
> plot(g)
> 

这是一个错误还是我做错了什么?

r igraph
1个回答
1
投票

问题是你在使用index时严重指定了set_edge_attr参数:

这将产生正确的结果:

g<-make_empty_graph(directed = F)

g<-add.vertices(g,c(10))

g<-add_edges(g,c(3,5))
g<-set_edge_attr(graph = g,name="weight",index = E(g),value = 0.3)

E(g)$weight
plot(g)

?set_edge_attr可以看到:

index:可选的边缘序列,用于设置边缘子集的属性

所以现在,假设您有另一个优势,并希望将其设置为10:

g<-make_empty_graph(directed = F)

g<-add.vertices(g,c(10))

g<-add_edges(g,c(3,5))
g<-add_edges(g,c(4,5))
g<-set_edge_attr(graph = g,name="weight",index = E(g)[1],value = 0.3)
g<-set_edge_attr(graph = g,name="weight",index = E(g)[2],value = 10)

E(g)$weight
plot(g)

你使用E(g)[1]作为第一个和E(g)[2],因为E(g)按照你指定的顺序返回所有边缘的数组(1将是c(3,5),2将是c(4,5))

最好!

© www.soinside.com 2019 - 2024. All rights reserved.