大家。
我正在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的列表。
如果你能帮助我,我将永远感激不尽 - 我已经在这两天了。
答案 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)
以便每次都不会在循环中覆盖对象。毕竟 - 非常容易和愚蠢的问题,但很难发现。