我对数字有奇怪的行为。在某些块中,knitr 从单个绘图函数生成两个图形,从“chunkname”生成的图形被命名为“chunkname1.pdf”和“chunkname2.pdf”。有时,第一个只是一个与第二个大小相同的空白图形,有时它是一个无法打开的文件。作为一种解决方法,我设置了该fig.keep='last'
选项。但是现在我想显示来自同一个块的两个图并将fig.keep
其设置为默认值,knitr 生成 3 个 PDF 图形文件,第一个是损坏的文件(一个无法打开的文件)。
我在 Win7 64 下有 knitr 版本 1.2 (2013-04-10)、R 3.0.0 64bit (r62697 2013-04-30)。以下是我正在使用的设置:
knit_hooks$set(par = function(before, options, envir) {
if (before) par(mar = c(4, 4, .1, .1))
})
opts_knit$set(concordance=TRUE, self.contained=TRUE)
opts_chunk$set(fig.path="figSW/SW-", keep.source=FALSE,
verbose=TRUE, message=FALSE)
我无法用一个简单的例子来重现它。但是,尝试创建这样一个示例时,我发现了其他奇怪的结果。在下面的示例中,只有图 1、2 和 10 正确显示,而所有其他图均未显示(未生成 PDF 文件,并且始终\includegraphics
未在 .tex 文件中生成。)
\documentclass[12pt,a4paper]{article}
\begin{document}
Plot 1
<<test-t, echo=TRUE, results="asis", fig.width=10, fig.height=5>>=
x = c(1,2,3)
y = c(1,3,2)
plot(x,y)
@
Plot 2\\
<<test-tt, echo=FALSE, results="hide", fig.width=10, fig.height=5>>=
plot(x,y)
@
\newpage
Plot 3
<<test-s, echo=TRUE, results="asis", fig.width=10, fig.height=5>>=
x = c(1,2,3)
y = c(1,3,2)
plot(x,y)
@
Plot 4\\
<<test-ss, echo=FALSE, results="hide", fig.width=10, fig.height=5>>=
plot(x,y)
@
\newpage
Plot 5
<<test-r, echo=TRUE, results="asis", fig.width=10, fig.height=5>>=
x = c(1,2,3)
y = c(1,3,2)
plot(x,y)
@
Plot 6\\
<<test-rr, echo=FALSE, results="hide", fig.width=10, fig.height=5>>=
plot(x,y)
@
\newpage
Plot 7
<<test-v, echo=TRUE, results="asis", fig.width=10, fig.height=5>>=
x = c(1,2,3)
y = c(1,3,2)
plot(x,y)
@
Plot 8\\
<<test-vv, echo=FALSE, results="hide", fig.width=10, fig.height=5>>=
plot(x,y)
@
\newpage
Plot 9
<<test-u, echo=TRUE, results="asis", fig.width=10, fig.height=5>>=
x = c(1,2,3)
y = c(1,3,2)
plot(x,y)
@
Plot 10\\
<<test-uu, echo=FALSE, results="hide", fig.width=10, fig.height=5>>=
plot(x,y)
@
\end{document}
更奇怪的是,从 R-Studio 中编译相同的文件,除了 1,2 和 10 之外,我还得到了 plot 6 的预期结果。