2016-08-05 37 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的當前功能。有時候最好將工作流程調整爲軟件而不是其他方式。 –

相關問題