iGraph R软件包错误?

时间:2019-03-08 21:20:36

标签: r igraph

当执行下面的简单代码以将权重添加到网络中从节点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)
> 

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

1 个答案:

答案 0 :(得分: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),因为dictionary_list会按照指定的顺序返回所有边缘的数组(1将为c(3,5)和2将是c(4,5))

最好!