【问题标题】:iGraph R package bug?iGraph R 包错误?
【发布时间】:2019-03-08 21:20:35
【问题描述】:

当执行下面的简单代码为网络中从节点 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】:

    问题是您在使用set_edge_attr 时错误地指定了index 参数:

    这将产生正确的结果:

    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))

    最好的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      相关资源
      最近更新 更多