我如何在 knitr 中使用缓存?
How do I use caching in knitr?
我在使用取决于外部数据文件的块进行缓存时遇到了一些问题。我的 Rnw 有外部代码块 getResults 和 printResults,它们在 Rnw 的开头从 externalCode.r 读取,还有一个常规块 fileData,用于创建缓存依赖项。
<<setup, include=FALSE, echo=FALSE, message=FALSE, warning=FALSE>>=
library(knitr)
opts_chunk$set(cache=TRUE)
read_chunk('externalCode.r')
@
<<fileData,echo=FALSE,include=FALSE,message=FALSE,warning=FALSE, cache.extra=md5sum(c('externalData1.csv','externalData2.csv'))>>=
@
<<getResults, echo=FALSE, dependson='fileData', include=FALSE, message=FALSE, warning=FALSE>>=
@
<<printResults, dev='tikz', dependson='getResults', echo=FALSE, include=TRUE, message=FALSE, warning=FALSE>>=
@
如果我关闭缓存,这一切都有效。但是,对外部文件的更改进行缓存不会触发对缓存文件 fileData* 的更新,因此不会更新绘图。我做错了什么?
已解决,r 代码中有一个更改目录,这意味着 md5sum 返回相同的 (NA) 值,尽管文件已更改,糟糕!
我在使用取决于外部数据文件的块进行缓存时遇到了一些问题。我的 Rnw 有外部代码块 getResults 和 printResults,它们在 Rnw 的开头从 externalCode.r 读取,还有一个常规块 fileData,用于创建缓存依赖项。
<<setup, include=FALSE, echo=FALSE, message=FALSE, warning=FALSE>>=
library(knitr)
opts_chunk$set(cache=TRUE)
read_chunk('externalCode.r')
@
<<fileData,echo=FALSE,include=FALSE,message=FALSE,warning=FALSE, cache.extra=md5sum(c('externalData1.csv','externalData2.csv'))>>=
@
<<getResults, echo=FALSE, dependson='fileData', include=FALSE, message=FALSE, warning=FALSE>>=
@
<<printResults, dev='tikz', dependson='getResults', echo=FALSE, include=TRUE, message=FALSE, warning=FALSE>>=
@
如果我关闭缓存,这一切都有效。但是,对外部文件的更改进行缓存不会触发对缓存文件 fileData* 的更新,因此不会更新绘图。我做错了什么?
已解决,r 代码中有一个更改目录,这意味着 md5sum 返回相同的 (NA) 值,尽管文件已更改,糟糕!