0

最后,考虑到我的情况,我决定让我的论文研究更接近于使其成为尽可能好的可重复研究的目标。由于目前我不使用LaTeX我的论文报告(尽管我正在考虑这个选项),我相信这knitr是最好的方法。

该软件项目实施我的论文研究(数据分析)的实证部分,正在编写R。该项目在目录结构中包含多个文件,这对于科学工作流程来说是相当典型的(顶级子目录:)analysis, cache, data, figures, import, prepare, present, results, sandbox, utils

一般来说,我已经阅读了很多关于knitr用于自动生成报告和可重复研究的信息(包括示例)。但是,我对大量的配置选项感到有些不知所措,更重要的是,仍然对在像我这样的项目中使用的最佳/正确/最佳方法knitr感到困惑,包含多个文件和目录。特别是,我对在不对模块进行太多修改的情况下转换 现有代码库的框架和步骤的建议感兴趣。R

例如,让我们考虑一下我的模块,与探索性数据分析 (EDA)相关。我当前的 EDA 工作流程包括:

  • 初步数据,从原始原始数据转换而来(位于“data/transform”子目录中);

  • 模块“eda.R”,位于“分析”目录中;

  • 目录“results/eda”,我当前的代码在其中生成单变量和多变量 EDA 的图形(SVG 文件),以及具有相同图形信息的单个文档报告(PDF 文件)(生成的描述性统计数据正在生成为控制台输出,运行“eda.R”脚本时)。

为了过渡到knitr基于 - 的项目,我创建了文件“eda-report.Rmd” ,其中包含R Markdown用于设置本地knitr选项的语句,包括read_chunk("eda.R"). 我的理解是,现在我需要根据我的 EDA 工作流程将R“eda.R”中现有的代码块定义为knitr 块,然后调用这些命名块。

问题:

这是正确的方法吗?knitr在设置项目路径、使用source()、分组一些地块gridExtra、防止潜在问题方面使用的最佳实践是什么?在我看来,除了“eda-report.Rmd”之外,我还需要创建另一个 R 模块,它将.Rmd通过knitr. 如果是,我应该使用哪个调用:rmarkdown::render()或者knitr::knit()(当我RStudio用于开发时,我希望我的代码独立于开发环境)?

更新 1(附加问题):

为什么通过“Knit HTML”按钮处理文件会产生.Rmd文档,而通过命令处理会产生文件,但不是,尽管存在指令?RStudioHTMLMakefileRscript -e 'library("knitr"); knit("eda-report.Rmd")'.mdHTMLoutput: html_document

谢谢您阅读此篇!您的建议将不胜感激!

4

1 回答 1

2

为了将您的工作流程转变为使用 knitr,我建议您不要试图让您编写的每一段代码都可重现,而应该从最有用的部分开始。

由于 knitr 是一个报告生成工具,因此最好的起点是在 knitr 中编写您的论文。(您提到您目前不使用 LaTeX。这很好:knitr 还支持 AsciiDoc,我发现它更容易编写。如果您的论文没有很多方程式或表格,您也可以将其写成Markdown 或 Textile,这更容易。)

同样,knitr 适用于您可能编写的任何报告或论文。

对于更高级的用法,您可以使用 knitr 创建演示文稿。(我有时会编写 xhtml Slidy演示文稿。)

我不会打扰的是试图编织你所有的探索性数据分析。您会发现的大多数事情都是无聊或死胡同,因此不值得付出额外的努力。尽可能快地专注于探索,然后编织有趣的部分。同样,数据清理通常不是那么有趣,因此注释良好的代码通常就足够了。


为了回答您关于目录结构的问题,我的偏好是,由于 knitr 报告用于最终输出,因此它们应该被沙箱化,远离更复杂的探索性工作。也就是说,他们可以拥有自己的目录,并制作自己的数字副本。

于 2014-07-20T09:46:34.870 回答