1

我正在使用 R 的 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.

我的问题是,我可以为实例的一次调用获取 out$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 循环 fu,虽然它已经很弱,但正在失败。

4

1 回答 1

2

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

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

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

于 2012-10-12T08:36:09.007 回答