最后,考虑到我的情况,我决定让我的_590280更接近使它成为好的目标 reproducible research . 由于目前我没有使用 LaTeX
作为我的论文报告(虽然我正在考虑这个选项),我相信 knitr
是最好的方法 .
实施我的论文研究(数据分析)的实证部分的软件项目正在 R
中编写 . 该项目包含目录结构中的多个文件,这对于科学工作流程来说非常典型(顶级子目录: analysis, cache, data, figures, import, prepare, present, results, sandbox, utils
) .
我已经阅读了大量有关使用 knitr
进行自动生成报告和可重复研究的信息(包括示例) . 但是,我有点被大量的配置选项所淹没,更重要的是,在我这样的项目中使用 knitr
仍然感到困惑,包含 multiple files and directories . 特别是,我对 transitioning 现有代码库的框架和步骤的建议感兴趣,而 R
模块中没有太多修改 .
作为 example ,让我们考虑一下与探索性数据分析(EDA)相关的模块 . 我目前的EDA工作流程包括:
-
初步数据,从原始原始数据转换(位于“数据/转换”子目录中);
-
模块“eda.R”,位于“分析”目录中;
-
目录“results / eda”,其中我的当前代码生成单变量和多变量EDA的数字(SVG文件),以及具有相同图形信息的单个文档报告(PDF文件)(生成的描述性统计信息正在生成为运行“eda.R”脚本时的控制台输出 .
为了转换到基于 knitr
的项目,我创建了文件"eda-report.Rmd",其中包含 R Markdown
语句,用于设置本地 knitr
选项,包括 read_chunk("eda.R")
. 我的理解是,现在我需要在"eda.R"中将现有的 R
代码块定义为 knitr
块,然后根据我的EDA工作流程调用这些命名的块 .
Questions:
这是正确的方法吗?使用 knitr
设置项目路径的最佳实践是什么,使用 source()
,通过 gridExtra
对一些图表进行分组,以防止潜在问题?在我看来,除了"eda-report.Rmd"之外,我还需要创建另一个R模块,它将通过 knitr
启动 .Rmd
文件的处理 . 如果是,我应该使用哪个调用: rmarkdown::render()
或 knitr::knit()
(当我使用 RStudio
进行开发时,我希望我的代码独立于开发环境)?
UPDATE 1 (Additional question):
为什么在 RStudio
中通过"Knit HTML"按钮处理 .Rmd
文件会产生 HTML
文档,而通过 Makefile
命令 Rscript -e 'library("knitr"); knit("eda-report.Rmd")'
处理产生 .md
文件,但不产生 HTML
,尽管存在 output: html_document
指令?
Thank you for reading this! Your advice will be greatly appreciated!
1 回答
为了将您的工作流程转换为使用knitr,我建议您应该从最有用的位开始,而不是尝试编写可重现的最后一段代码 .
由于knitr是一个报告生成工具,因此最好的起点是将您的论文写在knitr中 . (你提到你现在不使用LaTeX . 那很好:knitr也支持AsciiDoc,我发现它更容易编写 . 如果你的论文没有很多方程式或表格,你也可以放弃写入降价或纺织,更容易 . )
同样,knitr适用于您可能编写的任何报告或论文 .
要获得更高级的用法,您可以使用knitr创建演示文稿 . (我有时会编写xhtml Slidy演示文稿 . )
我不打扰的是试图编织所有的探索性数据分析 . 大多数事情你都值得付出额外的努力 . 尽可能快地集中精力进行探索,然后再编织有趣的部分 . 同样,数据清理通常不那么有趣,因此评论良好的代码通常就足够了 .
为了回答你关于目录结构的问题,我的偏好是因为knitr报告是针对最终输出的,所以它们应该远离更糟糕的探索性工作 . 也就是说,他们可以拥有自己的目录,并生成自己的数字副本 .