2011-02-03 5 views
7

मैं आर में अपने विश्लेषण रिपोर्ट दृष्टिकोण बड़ी सफलता के साथ Jeromy Anglim द्वारा उल्लिखित प्रयोग करने के लिए Sweave के संचालन स्वचालित करने के लिए एक makefile का उपयोग कर रहा है। मैं हाल ही में cacheSweave पैकेज के बारे में सुना और मैं अपने RNW फ़ाइल में है कि कार्यक्षमता को शामिल करना चाहते हैं। मैं ProjectTemplate पैकेज का उपयोग स्टार्टअप पर आवश्यक फ़ाइलों के सभी लोड करने के लिए, और क्योंकि मैं preprocess के लिए कच्चे डेटा फ़ाइलों है कि कुछ समय लगता है। cacheSweave शब्दचित्र शो में दिए गए उदाहरण एक अनुसंधान सत्र के भीतर cacheSweave ड्राइवर के साथ Sweave को चलाने के लिए:कैसे एक बैच में cacheSweave उपयोग करने के लिए Sweave फोन के माध्यम से बनाते हैं?

library(cacheSweave) 
Sweave("foo.Rnw", driver = cacheSweaveDriver) 

मैं अपने आदेश में cacheSweaveDriver का उपयोग बैच मोड में Sweave चलाने के लिए चाहते हैं?

$(TEXFILE).tex: $(TEXFILE).Rnw 
     R CMD SWeave $(TEXFILE).Rnw 
     R CMD Stangle $(TEXFILE).Rnw 

मैं Emacs + ईएसएस उपयोग कर रहा हूँ .Rnw फ़ाइल बनाने और बनाने को चलाने के लिए: मेरी makefile में यह कैसे मैं Sweave आह्वान है।

TEXFILE=report_presentation 
PLOTDIR= ../graphs 
PLOTS= 
FIGURES= $(PLOTDIR)/$(PLOTS) 
INPUTS= 

all: $(TEXFILE).pdf; make clean 

.PHONY: all clean 

$(TEXFILE).pdf: $(TEXFILE).tex $(FIGURES) $(INPUTS) 
# Initial run 
pdflatex $(TEXFILE) 

# Run bibtex if missing citations 
@if(grep "Citation" $(TEXFILE).log > /dev/null);\ 
then \ 
    bibtex $(TEXFILE);\ 
    pdflatex $(TEXFILE); \ 
fi 

# Recompile if instructed 
@if(grep "Rerun" $(TEXFILE).log > /dev/null);\ 
then \ 
    pdflatex $(TEXFILE); \ 
fi 

    $(TEXFILE).tex: $(TEXFILE).Rnw 
     R CMD Sweave $(TEXFILE).Rnw 
     R CMD Stangle $(TEXFILE).Rnw 

    ## Remove unnecessary files 
    clean: 
     -rm -f $(TEXFILE).log $(TEXFILE).aux $(TEXFILE).out $(TEXFILE).blg $(TEXFILE).bbl $(TEXFILE).nav $(TEXFILE).snm $(TEXFILE).toc Rplots.pdf 

उत्तर

3

ग्रेगर Gorjanc इस अनुमति के लिए एक खोल स्क्रिप्ट है:: यहाँ संदर्भ के लिए मेरी makefile के बाकी है

http://ggorjan.blogspot.com/2008/11/sweavesh-plays-with-cachesweave.html

यह मेरा घर का बना समाधान की तुलना में अधिक सुंदर है: एक बनाने के लिए है जो सरल "runcachesweave.R" कहा जाता है फ़ाइल युक्त

library(cacheSweave) 
Sweave("foo.Rnw", driver = cacheSweaveDriver) 

और फिर आर अध्यक्ष एवं प्रबंध निदेशक बैच runcachesweave.R बुला; latexmk पीडीएफ foo.tex

संबंधित मुद्दे