2016-05-10 17 views
1

Ich kompiliere eine PDF mit sweave und latex in r. Ich verwende rjags für MCMC-Methoden. Das Ausführen dieser Modelle dauert ungefähr eine Stunde. Jedes Mal, wenn ich meinen Code sweave zum Kompilieren einer PDF-Datei leite, werden auch alle jags Modelle erneut ausgeführt. Dies macht das Editieren und Herausfinden, wenn ich kleine Syntaxfehler gemacht habe, zu einer Qual, wenn es eine Stunde dauert, das PDF zu kompilieren. Wie behalte ich alle meine Variablen, die von meinem jags Code generiert werden, aber nicht sweave haben, jedes Mal zu bewerten? Die Daten sind hier zu finden: https://uwyo-files.instructure.com/courses/481850/files/36253354/course%20files/project4_genomebinom/chrgc.txt?download=1&inline=1&sf_verifier=ea3569eec1ca938fad4122a92e35ff57&ts=1462863980&user_id=569842Wie kompiliere ich ein Latex-Dokument in Sweave, ohne jedes Mal rjags ausführen zu müssen?

Hier ist ein Beispielcode

\documentclass[12pt, letterpaper]{article} 
\begin{document} 

<<computation,results=hide>>= 
humangc <- read.csv("c:\\temp\\RtmpYpMfSP\\data15a4519241c1") 
chr<-substr(humangc$chr, 4, 8) 
chr[chr=='X']<-23 
chr[chr=='Y']<-24 
chr<-as.numeric(chr) 
humangc<-data.frame(humangc[,-1], chr=chr) 
humangc<-humangc[order(humangc$chr, humangc$bp),] ### reorder data by chr 

## drop NA data and blocks with fewer than 100000 (10%) valid data 
humangc<-humangc[!is.na(humangc$valid) & humangc$valid > 100000,] 


### hierarchical Bayesian model in JAGS 
bin.beta.beta<-" 
model{ 
for(i in 1:bins){ 
gc[i] ~ dbinom(p[i], n[i]) 
p[i] ~ dbeta(chrgc * chrprec, (1-chrgc)*chrprec) 
} 

chrgc ~ dbeta(1,1) ## chrgc is same as pi 
chrprec ~ dunif(0.001,10000) ## chrprec is same as theta 
} 
" 
require(rjags) 

for(i in 1:24){ 
data.jags<-list(gc=humangc$gc[humangc$chr==i], 
       n=humangc$valid[humangc$chr==i], 
       bins=length(humangc$gc[humangc$chr==i])) 

mod.jags<- jags.model(textConnection(bin.beta.beta),data=data.jags,n.chains=3,n.adapt=1000) 

mod.samples<-jags.samples(model=mod.jags, variable.names=c("chrgc", "chrprec"), n.iter=5000,thin=2) 
### summarize quantiles of beta and p-values of empirical obs from Beta 

gcest<-NULL 

gcest$q<-qbeta(c(0.025, 0.5, 0.975), 
       mean(mod.samples$chrprec[1,,] * mod.samples$chrgc[1,,]), 
       mean(mod.samples$chrprec[1,,] * (1-mod.samples$chrgc[1,,]))) 
gcest$p<-pbeta(humangc$perc[humangc$chr==i], 
       mean(mod.samples$chrprec[1,,] * mod.samples$chrgc[1,,]), 
       mean(mod.samples$chrprec[1,,] * (1-mod.samples$chrgc[1,,]))) 
gcest$perc <- humangc$perc[humangc$chr==i] 
gcest$bp <- humangc$bp[humangc$chr==i] 
## write workspace for chromosome to disk 
save.image(paste("Rworkspace_chr", i, sep="")) 
    } 
@ 


<<echo=F, fig=T, include=F>>= 
update(mod.jags) 
require(coda) 
params <- c("chrgc", "chrprec") 
samps <- coda.samples(mod.jags, params, n.iter = 2000) 
plot(samps) 
@ 
SOME TRIVIAL TEXT!!!!!! 
end{document} 

Wie Sie sehen Ich schaffe 24 verschiedene Modelle. Das dauert eine Weile. Wie bekomme ich "EINIGE TRIVIAL TEXT !!!!!!!" um schnell zu erscheinen, wenn ich das pdf kompiliere, vorausgesetzt, dass ich die Variablen benötige, die durch jags erzeugt werden?

enter image description here

Der Schritt dauert über eine Weile.

Antwort

1

Werfen Sie einen Blick auf die Chunk-Option cache. Sie können Ergebnisse eines Chunks speichern, wenn er das erste Mal in einer R-Datenbankdatei ausgeführt wird. Beim erneuten Ausführen werden zwischengespeicherte Stücke übersprungen. Eine genauere Beschreibung dessen, was möglich ist, finden Sie unter here.

+0

Das ist eine Knitr-Option, keine Sweave-Option, aber es ist immer noch ein guter Rat. Maxwell sollte zu knitr wechseln. – user2554330

+0

Sorry, ich vergesse, wo die Linie zwischen Knitr und Sweave ist. Dies wird nicht durch Dokumente unterstützt, die in R Studio immer noch Sweave heißen, selbst wenn sie von knitr verarbeitet werden. – jamieRowen