我正在使用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,它已经很弱了,但是失败了。
答案 0 :(得分:2)
我不确定我是否理解正确。你想做类似的事情吗?
out <- lapply(X=1:10,FUN=function(x) ssa(x0, a, nu, tf=100)$data)
这将进行10次运行并将结果数据列表放入列表中。然后,您可以使用out[[2]]
访问第二次运行中的数据。