在单个节点上运行if语句的Igraph g% 设置顶点属性(“烟雾”,值=1)%>% 添加顶点(10,颜色=4,“a”=2) G 地块(g) 如果(“a”==2){ 设置顶点属性(“a”,值=1) } V(g)$a

在单个节点上运行if语句的Igraph g% 设置顶点属性(“烟雾”,值=1)%>% 添加顶点(10,颜色=4,“a”=2) G 地块(g) 如果(“a”==2){ 设置顶点属性(“a”,值=1) } V(g)$a,r,igraph,R,Igraph,对于igraph,每当我运行这段代码时,属性值为2的10个未连接节点的属性值都不会发生任何变化。如何更改此代码,使if语句为每个节点运行,并分别更改每个节点(取决于“a”的初始值)?您的if语句没有意义,因为 没有变量a,只有顶点的一个属性 if不是向量运算符。它返回一个布尔值 我想你想要的是 g <- make_ring(10) %>% set_vertex_attr("smoke", value = 1) %>% add_vertices(10, color = 4, "a

对于igraph,每当我运行这段代码时,属性值为2的10个未连接节点的属性值都不会发生任何变化。如何更改此代码,使if语句为每个节点运行,并分别更改每个节点(取决于“a”的初始值)?

您的if语句没有意义,因为

  • 没有变量a,只有顶点的一个属性
  • if不是向量运算符。它返回一个布尔值
  • 我想你想要的是

    g <- make_ring(10) %>%
    set_vertex_attr("smoke", value = 1) %>%
    add_vertices(10, color = 4, "a" = 2)
    g
    plot(g)
    
    if("a" == 2) {
         set_vertex_attr("a", value = 1)
    }
    V(g)$a
    
    V(g)$a[V(g)$a == 2] = 1
    V(g)$a
     [1] NA NA NA NA NA NA NA NA NA NA  1  1  1  1  1  1  1  1  1  1