如何在 Beamer 块内插入 Sweave 代码?

如何在 Beamer 块内插入 Sweave 代码?

我目前正在尝试在 R 中自动执行报告生成例程,我认为尝试此操作的最佳方法是通过 Sweave 和 beamerposter。报告应该有一页,其中包含多个部分,因此我使用了一个frame包含多个block环境的页面。我遇到的问题是在这些块中插入 Sweave 生成​​的图形(或任何 Sweave 代码)。例如,这会产生一个错误:

\documentclass{beamer}
\begin{document}
\SweaveOpts{concordance=TRUE}
  \begin{frame}
    \begin{block}{Title}
    <<>>=
    1 + 1
    @
    \end{block}
  \end{frame}
\end{document}

据我所知,block环境应该只包含文本,但我无法想象有其他方式来构建我的报告以满足客户的期望(他希望它看起来尽可能像他们当前的 Excel 生成的报告)。所以我的主要问题是:如何在环境中插入 Sweave 代码block

答案1

您的 MWE 的一个问题是 R 块的开始和结束(<<>>=@)都不在行的开头。

另一个问题是您必须将选项添加[fragile]frame环境中。

如果你纠正了这两个问题,那么示例就会起作用,并且如果你提供fig=T选项,还可以使用图形,如下例所示:

平均能量损失

\documentclass{beamer}
\usetheme{Madrid}
\begin{document}
\SweaveOpts{concordance=TRUE}
\begin{frame}[fragile]{This is a \texttt{fragile} frame}
\begin{block}{This is a R chunk}
<<oneandone>>=
1+1
@
\end{block}
\begin{block}{This is a small figure}
\setkeys{Gin}{width=0.3\linewidth}
<<plot,fig=TRUE>>=
plot(c(1,2,3,4,4,4,3,2,1),xlab="x",ylab="y")
@
\end{block}
\end{frame}
\end{document}

相关内容