繁体   English   中英

R / igraph删除满足特定要求的特定节点之间的边缘?

[英]R / igraph Removing the edge between specific nodes that fulfill a certain requirement?

我目前有这样的代码:

library(igraph)
set.seed(123); g <- erdos.renyi.game(30, 151 , type = "gnm" , directed = F , loops = F) %>%
  set_vertex_attr("a", value = 0) %>%
  set_vertex_attr("b", value = 0) 

V(g)$b <- sample(c(0, .6, .7), vcount(g), replace = TRUE, prob = c(0.3, .4, .3))


repeat{
mean <- mean(V(g)$a == 1)
prev_value <- mean(v(g)$a == 1)
V(g)$a[V(g)$b <= mean & V(g)$a == 0] <- 1
curr_value <- mean(v(g)$a == 1)

if(prev_value == curr_value){




break

}
}

我想在if代码中添加一些内容,以随机删除具有某些“特征”的边缘。 在这种情况下,我希望特征是两个连接的节点的“ a”值都为0。

我想随机删除两个连接的节点的边,其中“ a”的值均为0。

你可以试试

# trait:
candidates <- which(head_of(g, E(g))$a==0 & tail_of(g, E(g))$a==0)
# random: 20% prob for deletion
idx <- sample(c(TRUE, FALSE), length(candidates), prob = c(.2,.8), repl=T)
delete_edges(g, candidates[idx])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM