仅对已更改的Rnw文件的某些部分运行knitr

时间:2015-04-09 14:15:24

标签: r latex knitr sweave rnw

假设我在Rnw文件code_block_1code_block_2中包含两个代码块。假设我对code_block_1进行了更改,但code_block_2保持不变。

我正在使用knitrRnw文件转换为tex文件。由于code_block_2保持不变,我可以knitr仅评估并运行code_block_1吗?

1 个答案:

答案 0 :(得分:4)

首先在此处查看knitr个选项:http://yihui.name/knitr/options/。我认为您正在寻找的是cache选项。试试这个小例子,注意只有你实际改变代码的块的时间从一次运行变为另一次运行:

首先运行:

\documentclass{article}
\begin{document}

<<code_block_1, cache=TRUE>>=
set.seed(123)
x <- rnorm(10)
summary(x)
Sys.time()
@

<<code_block_2, cache=TRUE>>=
set.seed(123)
y <- rnorm(10)
summary(y)
Sys.time()
@

\end{document}

输出:

im1

第二次运行(在第二个块中添加注释后):

\documentclass{article}
\begin{document}

<<code_block_1, cache=TRUE>>=
set.seed(123)
x <- rnorm(10)
summary(x)
Sys.time()
@

<<code_block_2, cache=TRUE>>=
# Just added a comment in this chunk
set.seed(123)
y <- rnorm(10)
summary(y)
Sys.time()
@

\end{document}

输出:

im2