比较可重复的研究策略:brew 或 Sweave 与 R2HTML

机器算法验证 可重复研究 项目管理
2022-04-07 04:40:53

这是一个更“考虑一下”的问题——但我认为这是一个重要的问题。

在过去的几天里,我一直在为拥有一个更具可重复性的类似研究的工作流程而苦苦挣扎。我对撰写报告的两种不同策略感到困惑。

这两种策略是:

  1. 编织或酿造。有一个 report.Rnw 或 report.brew 文件混合了一些标记语言(HTML 或 LaTeX)和特殊大括号之间的 R 代码(比如 <<>>= @)。此文件需要通过 Sweave 或 brew 运行才能创建报告文件(report.html 或 report.tex)。
  2. R2HTML(用于 HTML)和 Hmisc(用于 LaTeX)。其中.r文件使用R函数构造report.html或report.tex;运行 R 命令直接生成报告。

对我来说很清楚的是,大多数在线人似乎都在使用选项 1。但我不明白为什么它如此普遍,而选项 2 在我看来(没有太多实验)工作量较少。

这两种策略什么时候更好?

4个回答

基于以下评论的新答案:

据我了解,方法 1 是在同一个文档中混合 R 代码和 HTML 或 LaTeX,例如使用 Sweave 或 brew 创建最终文档,而方法 2 是使用 R 代码生成 HTML 或 LaTeX,使用 R2HTML或 Hmisc 包,例如,然后运行 ​​R 代码来创建最终文档。我大多只是使用方法 1,但无论如何都会权衡。

在我看来,这实际上只是一个偏好问题。我看不出有任何技术或统计理由偏爱其中一个。它们都是使您的研究具有可重复性的方法。

我认为方法 1 更简单,因为您不必知道创建 LaTeX 或 HTML 代码的 R 函数是什么;您只需编写 R 代码,然后编写 HTML 或 LaTeX 代码,软件会负责将它们组合在一起。当 R 输出仅是最终文档的一小部分时尤其如此;例如,编写输出大量文本所需的 R 代码会很痛苦。在智能文本编辑器中,您还可以获得使用 R2HTML 或 Hmisc 时无法获得的每种代码的正确语法格式。在我看来,这种方法还可以更清晰地将结果与评论区分开来。

但是,对于简短的片段或只是从没有注释的命令中输出结果,使用 R2HTML 或 Hmisc 可能更容易,不过(根据我的经验),一旦你养成了 Sweaving 的习惯,你将永远不会回头。

这些只是几点。

  • 如果你只想写简单的报告,那么你需要学习的 LaTeX 命令集比你想做复杂的事情要少得多。
  • 与一些简单的标记系统相比,LaTeX 的一个吸引人的方面是,如果您想要引用、自动编号、多页表、有吸引力的类型设置等功能,这些功能都是可用的。特别是,有些功能最初我什至没有想到,但当我需要它们时,它们已经在 LaTeX 中作为一个包提供。
  • 如果您希望最终报告采用不同的格式,例如 HTML 或 rtf,那么您可以使用各种转换程序(如 pandoc)将乳胶转换为该格式。

关于 LaTeX 或 Sweave/odfWeave/asciiWeave 范式中的其他标记的另一件好事是,对于重复报告,您可以将其模板化一次,然后重复使用该模板。以 Harrell 的 rreport 包为例

您使用其中任何一个都非常安全 - 尽管我承认我根本不使用任何一个。我怀疑 LaTeX/Sweave 方法流行的主要原因是使用 LaTeX 作为主要论文/演示文稿/手稿格式的字段数量,这些格式鼓励使用基于 LaTeX 的系统。我不知道 .html 最终产品在哪个领域直接有用。