7

Jeromy Anglimによって概説されたアプローチを使用して、メイクファイルを使用して R での分析レポートの Sweave の実行を自動化し、大きな成功を収めてきました。最近、cacheSweave パッケージについて聞いたので、その機能を Rnw ファイルに組み込みたいと考えています。ProjectTemplate パッケージを使用して、起動時に必要なファイルをすべて読み込みますが、生データ ファイルを前処理する必要があるため、時間がかかります。cacheSweave ビネットの例は、R セッション内で cacheSweave ドライバーを使用して Sweave を実行する方法を示しています。

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

コマンドで cacheSweaveDriver を使用して Sweave をバッチ モードで実行するにはどうすればよいですか? 私のメイクファイルでは、これが Sweave を呼び出す方法です。

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

Emacs+ESS を使用して .Rnw ファイルを作成し、make を実行しています。参照用の残りのメイクファイルは次のとおりです。

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
4

1 に答える 1

3

Gregor Gorjanc には、これを可能にするシェル スクリプトがあります。

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

これは、以下を含む「runcachesweave.R」という単純なファイルを作成するという自家製のソリューションよりも洗練されています。

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

そして、R CMD BATCH runcachesweave.R;latexmk -pdf foo.tex を呼び出します

于 2011-02-08T16:16:25.453 に答える