2016-08-05 44 views
8

我是knitr的新用户。我知道knitr可以“纠结”(从Literate编程社区获取)或将源代码块提取到R脚本文件中。作为组织模式用户,我习惯于能够为每个代码块指定一个特定文件,并为不同的块指定相同的文件。当在组织模式中“纠缠”或提取源代码时,不是只有一个输出代码文件,而是生成一些代码文件(这有助于大型项目的模块化)。纠结knitr代码块不是一个而是几个文件

我不知道knitr中是否有类似的东西吗?我可以在块的基础上在knitr中指定输出文件吗?

+0

也许你可以进一步澄清这个问题。提供示例将有所帮助。我是一个普通的针织用户,但我不知道你在问什么。 –

+0

@ Maxim.K我认为你不知道Holger问什么的原因是这个问题的答案是“不”。但我完全同意,问题(c/sh)应该更清楚。我认为Holger正在寻找一个块选项,它以每个块为基础(不存在,AFAIK)指定'purl'的输出文件。 –

+0

@CL是的 - 那正是我正在寻找的。我从手册中已经意识到可能没有一个“简单”选项,但我希望拥有比我更多知识的人知道如何编写某种可以实现这一点的钩子函数。 –

回答

3

您的问题至少有两个不同的读数,每个需要略有不同的工作流程。

如果要将每个块写入单独的输出文档,然后为了协助模块化,应将报告部分拆分为多个文档。由于knitr支持child documents,您可以随时将它们重新组合成更大的文档,并且可以使用任何您喜欢的组合。

如果你想要一些大块的条件执行,并有条件可以运行几个不同的组合,使用R Markdown YAML头,并且包括params element.

---- 
params: 
    report_type: "weekly" # should be "weekly" or "yearly" 
---- 

您可以设置哪些块是通过设置evalinclude块选项来运行。

```{r, some_chunk, eval = params$report_type == "weekly", include = params$report_type == "weekly"} 
# chunk contents 
``` 
+0

谢谢 - 我认为你已经非常接近了。实际上,我不希望每个块都分为单独的文件,我希望能够为每个块指定它在哪个文件中(可能有多个文件放入同一个文件中)。你的条件执行很接近,除非我不想执行它们,我想把它们写出来。总的来说,从我读过的所有评论和回答中,答案似乎是我想要做的事情目前是不可能的。 –

+0

@HolgerHoefling是的,我试图想到适合您需要的工作流程,并有可能使用knitr的当前功能。有时候最好将工作流程调整为软件而不是其他方式。 –

相关问题