3

我想在摘要中包含一个 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

4 回答 4

4

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

\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}

块几乎可以在任何地方出现,包括before \begin{document}

于 2013-09-02T21:58:22.410 回答
3

您可以使用repo https://github.com/yihui/knitr-examplesknitr::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}

第一次编译该文档时,mean.data将不可用,但在重新编译该文档时会从缓存中读取。

于 2019-09-25T18:21:20.217 回答
2

如果您需要计算出现在摘要之后,您可以将结果保存到文件中,然后将其加载到摘要中。您必须编译 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}
于 2013-09-02T22:20:23.460 回答
0

如果您使用 LaTeX,另一种方法是在 LaTeX 处理阶段重新排列输出的顺序。我在 TeX 堆栈交换网站上问了一个类似的问题

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

于 2014-12-29T06:44:45.047 回答