我对数字的行为很奇怪。在一些块中,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文件,并且在.tex文件中始终未生成\includegraphics
。 )
\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之外,我得到了图6的预期结果。
答案 0 :(得分:4)
我无法使用您的示例和knitr
1.2 / R 3.0重现该问题。我按预期看到了所有10个情节。
对于损坏的PDF数据,它似乎是knitr
的开发版本中已修复的错误。你可以尝试
install.packages('knitr', repos = 'http://www.rforge.net/', type = 'source')