模拟从网络中删除节点 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 (将#修改为@)