2

我正在使用 R 中的 knitr 包来尝试将数据框转换为报告。问题是输入数据有很多可变性。目的是打印一行文本(从数据框中提取,然后是图表,也来自数据框)

以下代码是相同的精简版本。它不输出 PDF 文件。

\documentclass{report}
\usepackage{forloop}
\newcounter{tmp}

\begin{document}
\newcommand{\Brep}{$\Sexpr{A}$}

\forloop{tmp}{1}{\value{tmp} < \Brep} {\Brep}

\end{document}

在检查日志和删除部分时,我将其范围缩小到 knitr/latex 无法评估 forloop 条件下的 \FBrep 部分。

有没有办法解决这个问题?另外,在下一步中,我需要以类似的方式使用 includegraphics,如下所示

\includegraphics{\Brep.PNG}

对不起,如果这是 RTFM 材料。我真的很新,我确实环顾四周。谢谢

4

1 回答 1

3

你不能让 LaTeX 调用knitrR. 什么knitr是解析您的文档以获取 R 代码,并评估代码。然后一切都在 R 端完成,你得到一个与 R 无关的静态 LaTeX 输出文档。因此,如果您想编写任何东西,请在 R 代码中进行

将您的程序直接翻译成 R:

\documentclass{report}
\begin{document}

<<results='asis', echo=FALSE>>=
for (tmp in 1:A) {
  cat(tmp)
}
@

<<results='asis', echo=FALSE>>=
for (tmp in 1:A) {
  cat(sprintf('\\includegraphics{%d.PNG}', tmp))
}
@
\end{document}

但可以简化为:

\documentclass{report}
\begin{document}
\Sexpr{paste(1:A, collapse = '')}
\Sexpr{paste(sprintf('\\includegraphics{%d.PNG}', 1:A), collapse = '')}
\end{document}

我还需要提醒您,这可能不是在文档中插入绘图的理想方法(通常您不需要照顾\includegraphics{})。您需要了解这样的自动化:

\documentclass{report}
\begin{document}
<<>>=
for (i in 1:5) {
  hist(mtcars[, i])
}
@
\end{document}
于 2013-02-04T05:49:22.720 回答