如何通过make在批量Sweave调用中使用cacheSweave?

我一直在使用makefile来自动化运行Sweave,以便使用Jeromy Anglim概述的方法在R中为我的分析报告取得巨大成功。 我最近听说过cacheSweave软件包,我想将该功能合并到我的Rnw文件中。 我使用ProjectTemplate包在启动时加载所有必需的文件,这需要一些时间,因为我必须预处理原始数据文件。 cacheSweave小插图中的示例显示了如何在R会话中使用cacheSweave驱动程序运行Sweave:

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

我如何使用我的命令中的cacheSweaveDriver以批处理模式运行Sweave? 在我的makefile中,这是我如何调用Sweave:

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

我正在使用Emacs + ESS创建.Rnw文件并运行make。 以下是我的makefile的其余部分供参考:

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

Gregor Gorjanc有一个shell脚本允许这样做:

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

链接地址: http://www.djcxy.com/p/4569.html

上一篇: How to use cacheSweave in a batch Sweave call via make?

下一篇: HttpContext in WCF