【发布时间】:2017-06-17 04:13:41
【问题描述】:
我正在尝试使我的代码更加模块化:在一个脚本中加载和清理数据,在另一个脚本中进行分析等。如果我使用的是 R 脚本,这将是一个简单的问题,即在 data_setup.R 上调用 source在analysis.R 内部,但我想在 Rmarkdown 文档中记录我为数据设置和分析所做的决定。所以我正在尝试编写某种source_rmd 函数,它允许我将代码从data_setup.Rmd 获取到analysis.Rmd。
到目前为止我已经尝试过:
如果有任何重复的块名称,How to source R Markdown file like `source('myfile.r')`? 的答案将不起作用(这是一个问题,因为名为 setup 的块在 Rstudio 的笔记本处理中具有特殊行为)。 How to combine two RMarkdown (.Rmd) files into a single output? 想要合并整个文档,而不仅仅是一个代码,还需要唯一的块名称。我已经尝试按照Generate Dynamic R Markdown Blocks 中的建议使用knit_expand,但是我必须用双花括号中的变量命名块,而且我真的很想有一种方法让我的合作者也能轻松使用它。并且按照How to nest knit calls to fix duplicate chunk label errors? 中的建议使用knit_child 仍然会给我重复标签错误。
【问题讨论】:
-
避免重复标签错误的一个技巧就是不使用标签。这是人们在使用子文档时通常会做的事情。
-
@BrandonBertelsen 调整我的工作流程对 me 来说不是什么大问题,但我也在尝试向我的合作者提供这个功能来实现它他们也很容易用更好的工作流程进行编码。因此,理想情况下,我正在寻找某种方法来使其对某人可能对 Rmd 文档所做的各种事情具有鲁棒性。如果我让它太难使用,我担心人们根本不会分离他们的文件。 (此外,R 笔记本对名为
setup的块的处理方式不同,所以当它独立运行时,我会在我编写的每个文档中都需要其中一个)。 -
我不知道解决方法。我自己也有同样的问题。我通常会留下没有 YAML 标头和块标签的子文档。也许这是您将其组合在一起的过程的一部分(剥离块标签和 YAML)。如果能够让子文档自己也完全可复制,那就太好了。
-
@BrandonBertelsen 事实证明,Yuhui 添加了处理重复块标签的能力作为一个选项,这绕过了许多这些解决方案的主要问题。
标签: r knitr r-markdown