具有以矩阵形式创建随机图的代码。现在我想创建许多,比如说m
随机图,这样输出就是m
矩阵。我试图用for循环来做这件事。这将是我的首选方法,但我愿意接受其他建议(申请家人?)。这是我的代码,其中n是图表的节点/顶点数,beta是优先附件的数量(保持在0和1.5之间)
multiplerandomgraphs <- function(n, beta, m) {
for(k in 1:m) {
randomgraph <- function(n, beta) {
binfunction <- function(y) {
L <- length(y)
x <- c(0, cumsum(y))
U <- runif(1, min = 0 , max = sum(y))
for(i in 1:L) {
if(x[i] <= U && x[i+1] > U){
return(i)
}
}
}
mat <- matrix(0,n,n)
mat[1,2] <- 1
mat[2,1] <- 1
for(i in 3:n) {
degvect <- colSums(mat[ , (1:(i-1))])
degvect <- degvect^(beta)
j <- binfunction(degvect)
mat[i,j] <- 1
mat[j,i] <- 1
}
return(mat)
}
}
}
答案 0 :(得分:1)
您可以将随机图函数定义为randomgraph <- function(i, n, beta) {}
,其主体与您的定义相同,将参数i
保留为虚拟参数。然后使用apply函数作为listOfMatrix <- lapply(1:m, randomgraph, n, beta)
返回矩阵列表。