मैं एक ऐसी रिपोर्ट जेनरेट करने के लिए बुनाई का उपयोग करने की कोशिश कर रहा हूं जो डेटा सेट के विभिन्न सबसेट पर विश्लेषण का एक ही सेट करता है। प्रोजेक्ट में दो आरएमडी फाइलें हैं: पहली फ़ाइल एक मास्टर दस्तावेज़ है जो वर्कस्पेस और दस्तावेज़ को सेट करता है, दूसरी फ़ाइल में केवल ऐसे भाग होते हैं जो विश्लेषण करते हैं और संबंधित आंकड़े उत्पन्न करते हैं।आर बुनाई: चंक लेबल को प्रोग्रामेटिक रूप से संशोधित करना संभव है?
मैं जो करना चाहता हूं वह मास्टर फ़ाइल को बुनाई है, जो प्रत्येक डेटा सबसेट के लिए दूसरी फ़ाइल को कॉल करेगा और परिणामों को एक दस्तावेज़ में शामिल करेगा। नीचे एक साधारण उदाहरण है।
मास्टर दस्तावेज़:
# My report
```{r}
library(iterators)
data(mtcars)
```
```{r create-iterator}
cyl.i <- iter(unique(mtcars$cyl))
```
## Generate report for each level of cylinder variable
```{r cyl4-report, child='analysis-template.Rmd'}
```
```{r cyl6-report, child='analysis-template.Rmd'}
```
```{r cyl8-report, child='analysis-template.Rmd'}
```
विश्लेषण-template.Rmd:
```{r, results='asis'}
cur.cyl <- nextElem(cyl.i)
cat("###", cur.cyl)
```
```{r mpg-histogram}
hist(mtcars$mpg[mtcars$cyl == cur.cyl], main = paste(cur.cyl, "cylinders"))
```
```{r weight-histogam}
hist(mtcars$wt[mtcars$cyl == cur.cyl], main = paste(cur.cyl, "cylinders"))
```
समस्या knitr गैर-अद्वितीय हिस्सा लेबल के लिए अनुमति नहीं देता है, तो बुनाई जब analysis-template.Rmd
दूसरा कहा जाता है विफल रहता है पहर। इस समस्या को अज्ञात हिस्सों को छोड़कर टाला जा सकता है क्योंकि अद्वितीय लेबल स्वचालित रूप से जेनरेट किए जाएंगे। यह आदर्श नहीं है, हालांकि, क्योंकि मैं निर्यातित भूखंडों के लिए सूचनात्मक फ़ाइल नाम बनाने के लिए खंड लेबल का उपयोग करना चाहता हूं।
एक संभावित समाधान एक साधारण समारोह है कि हिस्सा लेबल करने के लिए वर्तमान सिलेंडर संलग्न कर देता है का उपयोग कर होगा:
```r{paste('cur-label', cyl, sep = "-")}
```
लेकिन यह प्रकट नहीं होता है कि knitr हिस्सा लेबल की स्थिति में एक अभिव्यक्ति का मूल्यांकन करेंगे ।
मैं भी एक कस्टम chunk hook कि मौजूदा हिस्सा के लेबल संशोधित उपयोग करने की कोशिश:
knit_hooks$set(cyl.suffix = function(before, options, envir) {
if (before) options$label <- "new-label"
})
लेकिन हिस्सा लेबल उत्पन्न भूखंडों के लिए फ़ाइल नाम को प्रभावित नहीं किया बदल रहा है, तो मुझे नहीं लगता था knitr नए लेबल का उपयोग कर रहा था।
चंक लेबल को बदलने के तरीके पर कोई विचार, तो एक ही बच्चे दस्तावेज़ को कई बार बुलाया जा सकता है? या शायद इसे पूरा करने के लिए एक वैकल्पिक रणनीति?
मैंने इस दृष्टिकोण का उपयोग किया है, लेकिन ध्यान दिया है कि टेम्पलेट परिणामों में 'echo = FALSE' का उपयोग करके कोड संसाधित नहीं किया जा रहा है। क्या आपने वही व्यवहार देखा है? –
** संपादित करें **: मैंने ** बुकडाउन ** पैकेज के साथ इस दृष्टिकोण का उपयोग किया है और देखा है कि टेम्पलेट परिणामों में 'परिणाम =' asis'' और 'echo = FALSE' का उपयोग करके कोड संसाधित नहीं किया जा रहा है। समाधान प्रत्येक आउटपुट को एक अलग कोड खंड में रखना है। –