当执行下面的简单代码以向网络中的节点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)
>
这是一个错误还是我做错了什么?
问题是你在使用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))
最好!