Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将研究项目过渡到基于knitr的设置_R_Knitr_Reproducible Research - Fatal编程技术网

将研究项目过渡到基于knitr的设置

将研究项目过渡到基于knitr的设置,r,knitr,reproducible-research,R,Knitr,Reproducible Research,最后,考虑到我的情况,我决定将我的论文研究向尽可能好的可复制研究的目标迈进。由于目前我没有在我的论文报告中使用LaTeX(尽管我正在考虑这个选项),我相信knitr是最好的方法 这个软件项目,实现了我论文研究的实证部分(数据分析),正在R中编写。该项目的目录结构中包含多个文件,这对于科学工作流来说非常典型(顶级子目录:分析、缓存、数据、图形、导入、准备、呈现、结果、沙盒、UTIL) 我已经阅读了大量关于使用knitr自动生成报告和可复制研究的信息(包括示例)。然而,我对众多的配置选项有些不知所措

最后,考虑到我的情况,我决定将我的论文研究向尽可能好的可复制研究的目标迈进。由于目前我没有在我的论文报告中使用
LaTeX
(尽管我正在考虑这个选项),我相信
knitr
是最好的方法

这个软件项目,实现了我论文研究的实证部分(数据分析),正在
R
中编写。该项目的目录结构中包含多个文件,这对于科学工作流来说非常典型(顶级子目录:
分析、缓存、数据、图形、导入、准备、呈现、结果、沙盒、UTIL

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

作为<强>示例< /强>,让我们考虑我的模块,与探索性数据分析(EDA)有关。我当前的EDA工作流程包括:

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

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

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

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

问题:

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

更新1(附加问题):

为什么通过“Knit HTML”按钮处理
RStudio
中的
.Rmd
文件会生成
HTML
文档,而通过
Makefile
命令处理
Rscript-e'库(“knitr”);knit(“eda report.Rmd”)
生成
.md
文件,但不生成
HTML
,尽管存在
输出:HTML\u文档
指令


感谢您阅读此文!非常感谢您的建议

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

因为knitr是一个报告生成工具,所以最好从用knitr写论文开始。(您提到目前不使用乳胶。这很好:knitr还支持AsciiDoc,我发现它更容易编写。如果您的论文没有太多的方程式或表格,您还可以用降价法或纺织法编写,这更容易。)

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

要获得更高级的使用,可以使用knitr创建演示文稿。(我有时编写xhtml演示文稿。)

我不想麻烦的是把你所有的探索性数据分析都编出来。你会发现大多数事情都很无聊或没有出路,所以不值得付出额外的努力。尽可能快地专注于探索,然后编织出有趣的片段。同样,数据清理通常也不那么有趣,因此注释良好的代码通常就足够了



为了回答您关于目录结构的问题,我的偏好是,由于knitr报告是用于最终输出的,所以应该将它们从更零碎的探索性工作中分离出来。也就是说,他们可以拥有自己的目录,并制作自己的图形副本

感谢您快速全面的回复!一般来说,我的
knitr
转换方法与您的建议非常接近。理想情况下,我更愿意将大多数主要的论文作品,如最终论文报告、国防演示幻灯片和一些中间报告,转换为由
knitr
自动生成。然而,由于日程安排非常紧凑,而且主要工作(使用
SEM
进行核心分析)尚未完成,我必须对我的任务进行优先排序。如果我有时间让我的研究更具可复制性,我很乐意这样做。接下来,我对你的建议感到有点惊讶,你建议不要在
EDA
中使用
knitr
,特别是基于你其余的建议,这似乎是有道理的。事实上,有两个主要原因让我决定用
knitr
开始体验