Igraph 运行 单个节点上的 if 语句

Igraph running an if statement on individual nodes

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

使用 igraph,每当我 运行 此代码时,属性值为 2 的 10 个未连接节点的属性值没有任何变化。我将如何更改此代码,以便 if 语句 运行s 用于每个节点并分别更改每个节点(取决于 "a" 的初始值)?

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

  1. 没有变量a,只是顶点的一个属性
  2. if 不是向量运算符。它returns一个单一的布尔值

我觉得你想要的是这样的

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