-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)
に関数のコードを編集するとき
forループの外側で 'output.addiction'を初期化してから、この行に' [i] 'undexを追加してください:' output.addiction [i] <-BuildOutputList(df.output ...) ' – zx8754
[Loop in R:出力を保存する方法?](http://stackoverflow.com/questions/9689387/loop-in-r-how-to-save-the-outputs) – zx8754