2016-05-26 70 views
-1

每個人。R Shiny:For循環僅在列表中保存1次迭代

我在Shiny R中編寫了一個模擬應用程序,我被困在for循環中。

基本上,在一個反應​​我打電話,通過一些其他功能迴路的功能,如:

在server.R:

output.addiction <- reactive ({ 
       SimulateMultiple(input$no.simulations, vectors(), parameters(), input$S.plus, input$q, 
           input$weeks, input$d, list.output) 
     }) 

功能:

SimulateMultiple <- function (no.simulations, vectors, parameters, S.plus, q, weeks, d, list.output) { 

     for (i in 1:no.simulations) { 
         thisi <- i 

         simulation <- SimulateAddictionComponents(vectors, parameters, S.plus, q, weeks, d) # returns list "simulation" 

         df.output <- BuildOutputDataframe(weeks, simulation, vectors) # returns "df.outout" 

         output.addiction <-BuildOutputList(df.output, simulation, list.output) # returns "output.addiction" 

     } 

     return(output.addiction) 
} 

而且,再次創建輸出列表的最後一個函數:

BuildOutputList <- function (df.output, simulation, list.output) { 
     addiction <- simulation$addiction 

     output.w.success <- list(df.output, addiction) # includes success data 
     output.addition <- c(list.output, list(output.w.success)) # adds the new data to the list 
     return(output.addition) 
} 

我在網上閱讀了很多關於這個問題的文章,我試圖隔離一些東西,介紹一個本地({})等,但它永遠不會起作用。最後,我得到一個長度爲1的列表。

我會永遠感激,如果你能幫助我 - 我已經在這個兩天了。

+0

初始化'output.addiction' for循環,然後在這一行添加'[i]'undex:'output.addiction [i] <-BuildOutputList(df.output ...)' – zx8754

+0

[Loop in R:如何保存輸出?](http://stackoverflow.com/questions/9689387/loop-in-r-how-to-save-the-outputs) – zx8754

回答

0

的問題就解決了本身當我編輯在該函數的代碼從

output.addition <- c(list.output, list(output.w.success)) # adds the new data to the list 
     return(output.addition) 

list.output <- c(list.output, list(output.w.success)) # adds the new data to the list 
     return(list.output) 

,以便在循環每次不覆蓋該對象。畢竟 - 非常容易和愚蠢的問題,但很難發現。