2016-05-26 4 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のリストを取得します。

あなたが私を助けることができたら、私は永遠に感謝しています - 私は今この2日間行っています。オブジェクトをループ内のすべての時間を上書きしないように、私は

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) 

に関数のコードを編集するとき

+0

forループの外側で 'output.addiction'を初期化してから、この行に' [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

問題自体を解決しました。結局のところ - 非常に簡単で愚かな問題ですが、見つけにくいです。

関連する問題