使用for循环重复多次函数

时间:2016-04-14 01:33:06

标签: r loops

具有以矩阵形式创建随机图的代码。现在我想创建许多,比如说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)
  }
 }
}

1 个答案:

答案 0 :(得分:1)

您可以将随机图函数定义为randomgraph <- function(i, n, beta) {},其主体与您的定义相同,将参数i保留为虚拟参数。然后使用apply函数作为listOfMatrix <- lapply(1:m, randomgraph, n, beta)返回矩阵列表。