R Shiny:For循环只在列表中保存1次迭代

时间:2016-05-26 11:11:27

标签: r shiny

大家。

我正在Shiny R中编写一个模拟应用程序,我陷入了for循环。

基本上,在一个被动的我调用一个循环通过其他几个函数的函数,如:

在server.R中:

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)
}

而且,最后一个创建输出列表的函数:

[0]

我在线阅读了很多关于这个问题,我试图隔离一些东西,介绍一个本地({})等。但它永远不会有效。最后,我得到一个长度为1的列表。

如果你能帮助我,我将永远感激不尽 - 我已经在这两天了。

1 个答案:

答案 0 :(得分: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)

以便每次都不会在循环中覆盖对象。毕竟 - 非常容易和愚蠢的问题,但很难发现。