gpt4 book ai didi

r - 如何在所有其他代码块之后强制 Knitr 评估\Sexpr

转载 作者:行者123 更新时间:2023-12-04 11:00:47 25 4
gpt4 key购买 nike

我正在尝试为动态文档编写摘要,但我的 \Sexpr{}通话不起作用。

基本上我要做的就是从一个摘要开始文档,该摘要具有从 \Sexpr{value} 生成的 p 值。其中值在文档中“下游”确定。例如

这有效:

\begin{document}

<<foo>>=
value = 10
@

Today I bought \Sexpr{value} Salamanders

\end{document}

这不起作用(以及我想要完成的事情)
\begin{document}

Today I bought \Sexpr{value} Salamanders

<<foo>>=
value = 10
@

最佳答案

我没有看到推迟评估 \Sexpr 的直接解决方案经过代码块评估,但仍然易于使用\Sexp稍后在摘要中定义值:为摘要使用单独的文件 (myabstract.Rnw),添加 \input{myabstract}应该包含摘要的位置和 knit myabstract.Rnw在主要文件的最后:

document.Rnw :

\documentclass{article}
\begin{document}

\begin{abstract}
\input{myabstract}
\end{abstract}

Main text.

<<>>=
answer <- 42
@

\end{document}

<<include = FALSE>>=
knit("myabstract.Rnw")
@

myabstract.Rnw :
The answer is \Sexpr{answer}.

理解其工作原理的关键是认识到 knitr在 LaTeX 之前处理文档。因此,LaTeX 命令 \input{myabstract} 无关紧要。包括 myabstract.tex “之前”(不是指时间,而是指行号), knit("myabstract.Rnw")生成 myabstract.tex .

对于更复杂的场景,评估和输出可以分开:在早期的 block 中进行所有计算并在它们所属的地方打印结果。要显示源代码, reuse block (设置 eval = FALSE )。使用上面的示例,这意味着:
\documentclass{article}
\begin{document}

<<calculation, include = FALSE>>=
answer <- 42
@

\begin{abstract}
The answer is \Sexpr{answer}.
\end{abstract}

Main text.

<<calculation, eval = FALSE>>=
@

\end{document}

关于r - 如何在所有其他代码块之后强制 Knitr 评估\Sexpr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24498362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com