2

我正在写一个文档,knitr并且Latex缓存机制有问题。具体来说,我有一个问题,我将多个数据帧写入 CSV 文件以便pgfplotstable稍后读取它们。但是,如果相应的 CSV 文件已被删除或以任何方式更改,则 knitr 的缓存机制无法重新运行块。比如下面的文档运行一次,删除mwe.dat后再运行会报错

\documentclass{article}
\begin{document}
<<cache=TRUE>>=
df <- data.frame(a=rep(1,5), b=rep(2.5), c=rep(3,5))
write.csv(df, file='mwe.dat')
rm(df)
@

<<cache=FALSE>>=
df <- read.csv(file='mwe.dat')
## Warning: cannot open file ’mwe.dat’: No such file or directory
## Error: cannot open the connection
@
\end{document}

那么问题来了,knitr 是如何确定一个 chunk 需要重新运行的呢?如果它只是关于块源代码的实际更改,那么我将不得不将我的(相当数量的)write.csv语句包装在它们自己的块中,尽管事实上大部分时间块只设置数据框要写。

4

1 回答 1

1

网站中的缓存页面knitr已经解释了这个问题。特别是,#238在该页面中搜索类似案例。

于 2013-03-15T05:32:38.390 回答