CRAN 任务视图:可重复研究
维护者 | John Blischak、Alison Hill、Ben Marwick、Daniel Sjoberg、Will Landau |
联系方式 | jdblischak at gmail.com |
版本 | 2024-02-20 |
网址 | https://CRAN.R-project.org/view=ReproducibleResearch |
源代码 | https://github.com/cran-task-views/ReproducibleResearch/ |
贡献 | 欢迎对本任务视图提出建议和改进,可以通过 GitHub 上的问题或拉取请求,或通过电子邮件发送给维护者地址。有关更多详细信息,请参阅 贡献指南。 |
引用 | John Blischak、Alison Hill、Ben Marwick、Daniel Sjoberg、Will Landau (2024)。CRAN 任务视图:可重复研究。版本 2024-02-20。网址 https://CRAN.R-project.org/view=ReproducibleResearch。 |
安装 | 可以使用 ctv 包自动安装本任务视图中的包。例如,ctv::install.views("ReproducibleResearch", coreOnly = TRUE) 安装所有核心包,或 ctv::update.views("ReproducibleResearch") 安装所有尚未安装和更新的包。有关更多详细信息,请参阅 CRAN 任务视图计划。 |
可重复研究的目标是将特定指令与数据分析和实验数据联系起来,以便可以重新创建、理解和验证学术成果。用于此目的的 R 包可以大致分为几组:文学编程、管道工具包、包可重复性、项目工作流程、代码/数据格式化工具、格式转换器和对象缓存。
现任维护者感谢 Max Kuhn 最初创建和维护本任务视图。
文学编程
R 通过使用内容和数据分析代码相结合的文档来促进可重复研究。Sweave
函数(位于基本 R utils 包中)和 knitr 包可用于混合主题内容和 R 代码,以便单个文档定义内容和分析。 brew 和 R.rsp 包包含将 R 代码嵌入到各种标记中的替代方法。
文学编程资源最好按文档类型/标记语言进行组织
LaTeX
Sweave
和 knitr 都可以处理 LaTeX 文件。 lazyWeave 可以从头开始创建 LaTeX 文档。 RweaveExtra 提供了 Sweave 驱动程序,其中包含其他选项来控制处理和输出。
可以使用 knitr 和 rmarkdown 包(以及 pandoc)使用 LaTeX beamer 类创建幻灯片。
对象转换函数
- 摘要表/统计: gtsummary, Hmisc, NMOF, papeR, quantreg, rapport, reporttools, sparktex, table1, tables, xtable, ztable
- 表格/交叉表: gtsummary, Hmisc, huxtable, lazyWeave, knitLatex, knitr, reporttools, table1, ztable
- 图形: animation, Hmisc,
grDevices:::pictex
, sparktex, tikzDevice - 统计模型/方法: gtsummary, memisc, quantreg, rms, stargazer, suRtex, texreg, xtable, ztable
- bibtex: bibtex 和 RefManageR
- 其他: latex2exp 将 LaTeX 公式转换为
plotmath
表达式。
其他工具
HTML
knitr 包可以直接处理 HTML 文件。Sweave
也可以通过 R2HTML 包来处理 HTML 文件。 lazyWeave 可以从头开始创建 HTML 格式的文档。
对于 HTML 幻灯片,可以使用 knitr 和 rmarkdown 包(以及 pandoc)来创建幻灯片,使用 ioslides,reveal.js,Slidy 或 remark.js(来自 xaringan 包)。
blogdown,bookdown 和 distill 包可以创建完整的网站。
对象转换函数
杂项工具: htmltools 提供了各种用于处理 HTML 的工具。 tufterhandout 可以创建 Tufte 风格的手册。
Markdown
knitr 包可以无需任何帮助处理 markdown 文件。 markdown 和 rmarkdown 包提供了用于处理此格式文档的通用工具。 lazyWeave 可以从头开始创建 markdown 格式的文档。 此外,ascii 包可以将 R 对象写入 AsciiDoc 格式。
对象转换函数
杂项工具: tufterhandout 可以创建 Tufte 风格的手册。 kfigr 允许在 markdown 文档中进行图形索引。
officer(以前称为 ReporteRs,在此之前称为 R2DOCX)包可以创建 docx
和 pptx
文件。 R2wd(仅限 Windows)也可以从头开始创建 Word 文档,而 R2PPT(同样仅限 Windows)可以创建 PowerPoint 幻灯片。 rtf 包对富文本格式文档执行相同的操作。 openxlsx 包创建 xlsx
文件。 readODS 包可以读取和写入 Open Document Spreadsheets。
对象转换函数
管道工具包 有助于维护和验证可重复性。它们将计算输出与底层代码和数据同步,并告知用户何时一切更新。换句话说,它们提供了具体证据,证明结果可以从起始材料中重新创建,并且数据分析项目不需要从头开始重新运行。 targets 包就是这样一个管道工具包。它类似于 GNU Make,但它是面向 R 的。
- drake: 一个用于数据分析的通用计算引擎,drake 在其依赖项发生变化时重建中间数据对象,并在结果已更新时跳过工作。
- flowr: 此框架允许您设计和实现复杂的管道,并在您的机构的计算集群上部署它们。
- makeit: 根据最后修改时间运行 R 脚本(如果需要)。在基本 R 中实现,无需任何额外的软件要求、组织开销或结构要求。
- makepipe: 一套工具,用于将现有工作流程转换为自文档管道,前期成本极低。
- repo: 一个数据管理器,旨在避免手动将数据存储到文件系统或从文件系统检索数据。
- targets: 作为 R 中统计和数据科学的管道工具包,'targets' 包将面向函数的编程和 'Make' 样式的声明式工作流程结合在一起。
包可重复性
R 有各种工具可以确保可以为分析要求特定的包版本。例如,renv 包在特定于项目的目录中安装包,记录“锁定文件”中当前包版本的“快照”,并在不同的机器上恢复包设置。
- checkpoint: 允许您安装包,就像它们在特定快照日期的 CRAN 上存在一样,就好像您拥有一个 CRAN 时间机器。
- dateback: 就像一个虚拟的 CRAN 快照,用于源代码包。它会自动下载并安装特定日期可用的所有依赖项的“tar.gz”文件。
- groundhog: 使依赖于包的 R 脚本可重复,确保每次运行给定脚本时,都会加载相同版本的已使用包。
- liftr: 通过对 R Markdown 文档进行容器化,实现持久可重复的报告。
- miniCRAN: 使得创建内部一致的存储库成为可能,该存储库包含来自 CRAN 类存储库的选定包。
- packrat: 以隔离、可移植和可重复的方式管理项目所依赖的 R 包。
- rang: 解析特定时间点的 R 包依赖关系图,以重建 R 计算环境。
- renv: 创建和管理项目本地 R 库,将这些库的状态保存到“锁定文件”,并在需要时恢复您的库。
- Require: 一个名为“Require”的单键函数,它为 CRAN 包、不再在 CRAN 上的包(即已存档)、特定版本的包和 GitHub 包创建了可重新运行的“install.packages”和“require”版本。
- switchr: 提供了一个抽象层,用于管理、安装和切换已安装的 R 包集。
项目工作流程
成功完成数据分析项目通常需要远远超出统计和可视化。随着项目的发展,有效地管理代码、数据和结果有助于减少压力和错误。以下“工作流程”包通过管理项目基础设施和/或促进可重复的工作流程来帮助 R 程序员。
工作流程实用程序包提供单一用途函数来实现项目基础设施或解决特定问题。例如,usethis::use_git()
初始化一个 Git 存储库,忽略常见的 R 文件,并提交所有项目文件。
- cabinets: 创建特定于项目的目录和文件模板,这些模板将写入 .Rprofile 文件。
- here: 构造项目文件的路径。
- prodigenr: 创建项目目录结构,以及该项目的典型文件。
- RepoGenerator: 为 R 研讨会生成一个项目和存储库,以便轻松初始化 GitHub 存储库。
- rrtools ( 仅限 GitHub ): 使用 R 进行可重复研究的基本纲要的说明、模板和函数。
- starter: 通过将新项目的骨架放到新目录或现有目录中,初始化 Git 存储库,并使用“renv”包创建可重复的环境,从而开始新项目。
- starters ( 仅限 GitHub ): 设置用于教学、演示、分析、包开发的 R 项目目录可能很麻烦。starters 通过创建文件夹结构并为您设置良好的默认值来简化此过程。
- trackdown: 通过 Google Docs 进行 R Markdown(或 Sweave)文档的协作编写和编辑。
- usethis: 自动执行原本需要手动完成的包和项目设置任务。
工作流程框架包提供了一个组织良好的目录结构和辅助函数,以在项目开发过程中提供帮助。例如,ProjectTemplate::create.project()
创建了一个包含多个子目录的组织良好的设置,而 ProjectTemplate::run.project()
则执行保存在 src/
子目录中的每个 R 脚本。
- exreport: 对实验结果进行分析,并自动生成交互式 HTML 和 LaTeX 格式的报告。
- madrat: 提供了一个框架,旨在提高数据处理的可重复性和透明度。它提供了诸如自动元数据创建和管理、基本质量管理、数据缓存、工作流程管理和数据聚合等功能。
- makeProject: 此包为 Josh Reich 描述的“加载、清理、函数、执行”结构创建了一个空的框架文件和目录。
- orderly: 从 R 中整理、创建和存储报告。
- projects: 提供一个以手稿创建为重点的项目基础设施。
- ProjectTemplate: 提供函数来自动构建新 R 项目的目录结构。使用此结构,“ProjectTemplate” 自动执行数据加载、预处理、库导入和单元测试。
- rcompendium: 使创建 R 包或研究纲要(即预定义的文件/文件夹结构)变得更容易,以便用户可以专注于代码/分析,而不是浪费时间组织文件。
- reportfactory: 提供了一个用于处理多个 R Markdown 报告的基础设施,包括自动整理和时间戳输出、参数化以及提供辅助函数来管理依赖项。
- represtools: 可重复研究工具自动创建分析目录结构和工作流程。有一些 R markdown 模板封装了典型的分析工作流程步骤。函数将创建适当的模块,这些模块可以将数据从一个步骤传递到另一个步骤。
- TAF: 用于组织可重复科学分析中使用的数据、方法和结果的通用框架。TAF 分析包含四个按顺序运行的脚本(data.R、model.R、output.R、report.R)。
- tinyProject: 为数据分析项目创建有用的文件和文件夹,并提供函数来管理数据、脚本和输出文件。
- worcs: 在“R”中创建可重复且透明的研究项目。此包基于科学开放可重复代码的工作流程 (WORCS),这是一个基于开放科学最佳实践的分步程序。
- workflowr: 通过结合文学编程(“knitr”和“rmarkdown”)和版本控制(“Git”,通过“git2r”)为您的分析项目提供工作流程,以生成一个包含时间戳、版本化和文档化结果的网站。
formatR 和 styler 可用于格式化 R 代码。
highlight 和 highr 可用于为 R 代码着色。
包 humanFormat、lubridate、prettyunits 和 rprintf 包含用于更好地格式化数据的函数。
pander 可用于将 R 对象渲染为 Pandoc 的 markdown。 knitr 具有函数 pandoc
,可以调用已安装的 Pandoc 版本来在 Markdown、HTML、LaTeX、PDF 和 Word 等格式之间转换文档。 tth 促进 TeX 到 HTML/MathML 的转换。
对象缓存包
在使用 Sweave
和 knitr 时,如果文档将被重新处理(例如在调试期间),则对耗时代码块的结果进行缓存可能是有利的。 knitr 促进对象缓存,Bioconductor 包 weaver 可与 Sweave
一起使用。
用于促进缓存/归档的非文学编程包是 archivist、R.cache、reproducible 和 storr
CRAN 包
核心 | Hmisc、knitr、R2HTML、rms、xtable. |
常规 | animation, archivist, ascii, bibtex, blogdown, bookdown, brew, cabinets, checkpoint, dateback, distill, drake, DT, exams, exreport, flextable, flowr, formatR, formattable, groundhog, gt, gtsummary, here, highlight, highr, htmlTable, htmltools, HTMLUtils, humanFormat, huxtable, hwriter, kfigr, knitcitations, knitLatex, latex2exp, lazyWeave, liftr, lubridate, madrat, makeit, makepipe, makeProject, markdown, memisc, miniCRAN, mschart, NMOF, officer, openxlsx, orderly, packrat, pander, papeR, parameters, pharmaRTF, prettyunits, prodigenr, projects, ProjectTemplate, quantreg, R.cache, R.rsp, R2PPT, r2rtf, R2wd, rang, rapport, rcompendium, readODS, RefManageR, renv, repo, RepoGenerator, reportfactory, reporttools, represtools, reproducible, Require, rmarkdown, rprintf, rtf, RweaveExtra, sparktex, stargazer, starter, storr, styler, suRtex, switchr, table1, tables, TAF, targets, texreg, tikzDevice, tinyProject, trackdown, tth, tufterhandout, unrtf, usethis, worcs, workflowr, xaringan, ztable. |
相关链接
其他资源