【问题标题】:Insert output of R code into an Rnw file将 R 代码的输出插入到 Rnw 文件中
【发布时间】:2023-03-27 06:00:02
【问题描述】:

我经常将 R 代码嵌入到 Rnw 文件中,并使用knitr 将 Rnw 文件转换为 tex 文件,然后再转换为 pdf。这种方法的好处是增加了可重复性。缺点是会打断写作流程。

例如,假设以下是研究论文结果部分的一部分:

我比较了 A 组和 B 组的平均值。A 组的平均值是 \Sexpr{mean(groupA)}。 B 组的平均值为\Sexpr{mean(groupB)}。 (以下几句话然后将这两种方式放在 上下文,解释这两种手段的价值,并解释 它们差异大小的相关性)

为了将均值置于上下文中,解释它们的值并解释它们差异的相关性,我需要能够看到每个均值的实际值。但是如果不运行 knitr 转换为 tex 再转换为 pdf ,我无法看到每个平均值的值,这会分散并抑制写作过程的流程。

人们是否使用任何允许 R 代码在 Rnw 文件中运行的方法。在上面的例子中,有没有一种方法可以显示 Rnw 文件中每个平均值的值,从而不会中断写入流程?或者有什么解决办法?

【问题讨论】:

  • 您不能将您的计算包含在一个未显示的块中吗?如果您使用的是 RStudio,那么您可以只运行该块(甚至相关行)来查看结果。存储的值可以在您的\Sexpr 块中使用。
  • 抱歉,我没有正确理解。能稍微详细点吗?

标签: r pdf latex knitr sweave


【解决方案1】:

如果您使用 RStudio,您可以执行以下操作:

\documentclass{article}

\begin{document}

<<echo = FALSE, eval = TRUE, results='hide'>>=
# This is a code chunk that I want to ealuate and store variables in.
# I can "ctrl + enter" in here and actually run the calculations in 
# the console in RStudio.
set.seed(1)
A <- sample(300, 30)
B <- sample(200, 40)
mA <- mean(A);mA
mB <- mean(B);mB
@

I compared the means of group A and group B. The mean of group A was 
\Sexpr{mA}. The mean of group B was \Sexpr{mB}. 

\end{document}

在编写文档时,您实际上可以运行块(甚至还有一个“运行当前块”按钮 - Ctrl + Alt + C) 或仅使用 Ctrl + Enter 运行特定行。输出将显示在控制台中,允许您在编写句子之前比较值,而无需完全编译您的文档。

【讨论】:

  • 谢谢。这几乎就是我已经在做的事情。假设我希望有一种方法可以将平均值的实际值自动插入到 Rnw 文件中。这可能要求太多了!
  • @luciano,我想我当时误解了你的问题。听起来您正在编译 PDF 以查看结果并编写分析,而这仅涉及在 Rnw 编辑工作区中运行相关块....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 2019-04-02
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多