重复运行一个函数并附加其输出

时间:2012-10-12 07:47:13

标签: r

我正在使用Gil的GillespieSSA软件包,它允许您轻松快速地调用随机模拟的单个实例。但是单一的实现并不是非常有用,我希望能够看到偶然产生的可变性等。考虑一个非常基本的模型:

library(GillespieSSA)
x0 <- c(S=499, I=1, R=0)
a <- c("0.001*{S}*{I}","0.1*{I}")
nu <- matrix(c(-1,0,
               +1,-1,
               0, +1),nrow=3,byrow=T)
out <- ssa(x0, a, nu, tf=100)

这列出了一个非常复杂的列表,其中有趣的部分位于out$data

我的问题是,我可以为实例的单个调用获取$ data,用一个变量标记它,指示函数的调用,然后将该数据追加到旧数据中设置在最后。所以在粗伪R中,有类似的东西:

nruns <- 10
for (i in 1:nruns){
   out <- ssa(x0, a, nu, tf=100)
   data <- out$data
   run <- rep(i,times=length[data[,2]))
   data <- cbind(data,run)

但是在每个时间步都没有覆盖数据。我觉得我很接近,但是本周在几种语言之间跳了起来,我的R loop fu,它已经很弱了,但是失败了。

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解正确。你想做类似的事情吗?

out <- lapply(X=1:10,FUN=function(x) ssa(x0, a, nu, tf=100)$data)

这将进行10次运行并将结果数据列表放入列表中。然后,您可以使用out[[2]]访问第二次运行中的数据。