【问题标题】:for loop storage issue (nested for loops)for 循环存储问题(嵌套 for 循环)
【发布时间】:2013-10-25 17:24:02
【问题描述】:

我在存储中间 for 循环中的所有数据时遇到了困难。当我在外部 for 循环运行后尝试检索数据时,我能够获得的唯一数据是最终运行。我如何将 D 的所有运行存储在一个矩阵中?

set.seed(3690)

iterations <- 20
mean_birthrate <- 0.4
stand_dev_birthrate <- 0.1
mean_survival_rate <- 0.68
stand_dev_survival <- 0.07
initial_population <- 100
period <- 20
End_Year <- 2013+period

birthrate <- rnorm(n=1,mean=mean_birthrate,sd=stand_dev_birthrate)
birthrate
survival <- rnorm(n=1,mean=mean_survival_rate,sd=stand_dev_survival)
survival

 growth_rate <- birthrate - (1-survival)
 growth_rate


 for (k in 1:50) {
 D <- numeric(period)
 D[1] <- initial_population

 for (i in 1:period) {
  D[i+1] <- D[i] + ((rnorm(n=1,mean=mean_birthrate,sd=stand_dev_birthrate) -  (1-rnorm(n=1,mean=mean_survival_rate,sd=stand_dev_survival))) * D[i]) 
  }

 print(D)

 if (k==1)
 plot(D, typ="l",ylab="Number of Bobcats",xlab="Year",ylim=c(50,1700),xaxt='n')
 if (k>1)
 lines(D,col = rgb(0,0,0,0.1),xaxt='n')
}

【问题讨论】:

    标签: r for-loop nested-loops


    【解决方案1】:

    如果您嵌套了for 循环,则需要嵌套lists(或其他形式来捕获n x m 的许多结果)

     #outter loop
     for (i in...)
       D[[i]]  <- list()
    
       #inner loop
       for (j in ...)
         D[[i]][[j]]  <- value
         # or different syntax:
         D[[c(i, j)]] <- calue
    

    【讨论】:

      【解决方案2】:

      我有一个类似的问题,并用一个预定义的变量来解决它,像这样:

      DATA <- list()
      j <- 0
      for(k in 1:10){
        for(i in 1:5){
          temp.DATA <- i*k #or whatever the loop does
          j <- j+1
          DATA[[j]] <- temp.DATA
        }
      }
      DATA2 <- do.call(rbind.data.frame, DATA)
      

      希望有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-17
        • 1970-01-01
        相关资源
        最近更新 更多