2012-10-12 3 views
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입니다.

제 질문은 인스턴스의 단일 호출에 대해 $ 데이터를 가져오고, 함수의 호출을 나타내는 변수에 태그를 지정한 다음 해당 데이터를 이전 데이터에 추가하여 하나의 데이터로 추가 할 수 있습니다 큰 끝에 설정합니다. 따라서 거친 의사 -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는 이미 약한 것처럼 실패하고있다.

답변

2

정확하게 이해했는지 확신 할 수 없습니다. 다음과 같은 것을하고 싶습니까?

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

이렇게하면 10 회 실행되고 결과 데이터 목록이 목록에 표시됩니다. 그런 다음 예를 들어 out[[2]]을 사용하여 두 번째 실행에서 데이터에 액세스 할 수 있습니다.

+0

이것이 실제로 내가 원하는 것일 수 있습니다. 두 번째 실행의 두 번째 요소에 어떻게 접근합니까? 위의 질문에서 데이터 [, 2]와 동일합니다. – Fomite

+0

'out [[2]] [, 2]'는 그 일을 할 것입니다. – Roland

관련 문제