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