我想在摘要中包含一个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}
答案 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处理步骤中的摘要之后重新插入。