微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

模拟从网络中删除节点 100 次上一个问题 https://stackoverflow.com/questions/61082761/how-do-i-delete-nodes-in-igraph-in-r

如何解决模拟从网络中删除节点 100 次上一个问题 https://stackoverflow.com/questions/61082761/how-do-i-delete-nodes-in-igraph-in-r

我正在尝试复制 How do I delete nodes in igraph in R? 中发布的与攻击率和删除节点相关的函数。我已经重新发布了同样有效的内容,但我不确定的部分。我想要的是模拟那个函数 100 次

这是上一个问题的部分,有效;

library(igraph)
nnodes=100 #number of nodes
test.graph<-barabasi.game(nnodes,.5) #create B-A network
test.graph2=test.graph #create a second B-A network for removing nodes
bar_mat=matrix(0,nrow=nnodes,ncol=1) #create empty matrix
for (i in 1:nnodes){
  bar_mat[i,]=sum(test.graph[,i]) #sums up the number of connections of each node
}
vcount(test.graph)
#> [1] 100

# Sample 5 random nodes
`set.seed(1491)`
`a=sample(1:nrow(bar_mat),20)`

`for (i in a) {`
  `if(bar_mat[i,]<=mean(bar_mat)){a`
    `test.graph2 <- delete.vertices(test.graph2,i)`
    `}`
  `}`
`#> Error in delete.vertices(test.graph2,i): At iterators.c:759 : Cannot create iterator,invalid vertex id,Invalid vertex id`

`vcount(test.graph2)`

我尝试通过创建一个新的空矩阵来存储 100 个值并添加一个 for 循环来模拟 (How do I delete nodes in igraph in R?) 中的原始函数来复制它 100 次。我想知道的是;如果我要复制相同的功能 100 次,将删除哪些节点。我得到了一个答案,但我不确定这是否正确,因为当我更改 setseed 编号时,它给了我 0。任何人都可以帮我验证该函数是否重复了 100 次并且它是否正在产生输出或者是否修改要工作的代码,我对 R 中的编码几乎一无所知(因此复制前面的问题)。谢谢。

`bar_mat1=matrix(0,nrow=100,ncol=1) #create empty matrix,`
`#To replicate 100 times`
`for(n in 1:100){`
`# Sample 5 random nodes`
`set.seed(1491)`
`a=sample(1:nrow(bar_mat),20)`

`for (i in a) {`
        `if(bar_mat[i,]<=mean(bar_mat)){a`
                `test.graph2 <- delete.vertices(test.graph2,i)`
       ` }`
        `bar_mat1<- a`
        `a=0 #resetting a`
        
`}}`
`bar_mat1`

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。