在文章摘要中使用R计算

时间:2013-09-02 21:31:55

标签: r knitr

我想在摘要中包含一个R计算。 R计算位于文档的底部,因此当我编译rnw文件时出现错误。

这是一个最小的例子:

\documentclass{article}
\begin{document}

\begin{abstract}
    This paper... and we got a mean of \Sexpr{mean.data}.
\end{abstract}

<<>>=
data <- c(1,2,3,4,5)
mean.data <- mean(data)
@

\end{document}

4 个答案:

答案 0 :(得分:5)

嗯,你显然需要在使用之前移动定义的东西,而不是之后。所以试试这个:

\documentclass{article}
\begin{document}

<<>>=
data <- c(1,2,3,4,5)
mean.data <- mean(data)
@

\begin{abstract}
    This paper... and we got a mean of \Sexpr{mean.data}.
\end{abstract}

\end{document}

Chunks几乎可以在任何地方出现,包括之前的 \begin{document}

答案 1 :(得分:1)

如果需要计算出现在摘要之后, 您可以将结果保存到文件中,并将其加载到摘要中。 您必须两次编译LaTeX文件。

\documentclass{article}
\begin{document}

\begin{abstract}
 This paper... and we got a mean of \Sexpr{load("a.RData"); mean.data}.
\end{abstract}

<<Computations>>=
data <- c(1,2,3,4,5)
mean.data <- mean(data)
save(mean.data, file="a.RData")
@

\end{document}

答案 2 :(得分:1)

您可以使用func函数,如仓库https://github.com/yihui/knitr-examples中的示例knitr::load_cache()所示。下面是在您的情况下如何使用该功能的方法:

114-load-cache.Rmd

第一次编译此文档时,\documentclass{article} \begin{document} \begin{abstract} This paper... and we got a mean of \Sexpr{knitr::load_cache('test-a', 'mean.data')}. \end{abstract} <<test-a, cache=TRUE>>= data <- c(1,2,3,4,5) mean.data <- mean(data) @ \end{document} 将不可用,但在重新编译文档时将从缓存中读取它。

答案 3 :(得分:0)

如果您使用LaTeX,另一种方法是重新排列LaTeX处理阶段的输出顺序。我问了somewhat similar question on the TeX stack exchange site

该方法使用filecontents(LaTeX)包来存储部分输出,然后再重放。在这种方法中,您的摘要实际上是在文档的末尾定义的,但是它上面的所有内容都将存储在一个文件中,然后在LaTeX处理步骤中的摘要之后重新插入。