如何跨两个(或更多)文件缓存knitr块?

时间:2013-07-06 14:24:15

标签: r knitr

我想在两个不同的* .Rnw文件中使用一些R-Code,并希望在这些文件中使用缓存。 我看了http://yihui.name/knitr/demo/externalization/

在一个文件中缓存工作正常。但是运行第二个代码会再次执行:

plain.R

## @knitr random1
a <- rnorm(10)
a

doc1.Rnw(和doc2.Rnw)

\documentclass{article}

<<set-options, echo=FALSE, cache=FALSE>>=
 options(replace.assign=TRUE)
 opts_chunk$set(external=TRUE, cache=TRUE, echo=FALSE, fig=TRUE)
 read_chunk('plain.R')
@

\title{Doc 1}

\begin{document}

<<random1>>=
@

\end{document}

有没有办法在多个文档之间共享缓存?

2 个答案:

答案 0 :(得分:1)

完全可以在多个源文档中重用缓存。请仔细阅读cache page以了解何时重建缓存。在您的情况下,除非您的两个文档具有不同的块选项(条件1)或不同的getOption('width')(条件3),否则不应重建缓存,因为您的代码保持不变(条件2)。

你必须发布一个可重复的例子,否则这不是一个真正的问题。

答案 1 :(得分:0)

完全重置示例后,结果证明两个文件都重用了缓存。我不确定之前导致问题的是什么......

但是在一个更大的项目中,块不会被缓存。所以我不确定导致问题的原因 - 可能只是一个不同的空间数......