2015-10-05 7 views
9

का उपयोग करके मार्कडाउन टेक्स्ट के ब्लॉक को सशर्त रूप से प्रदर्शित करें, मैं "समाधान" की सूची के साथ एक एकल रमार्कडाउन (आरएमडी) दस्तावेज़ संपादित करना चाहता हूं, प्रत्येक इसके समाधान के बाद। प्रत्येक समाधान में आर कंसोल के परिणाम हो सकते हैं, लेकिन कुछ समझाते हैं (मार्कडाउन और लाटेक्स प्रारूपित) पाठ। इसके अलावा, मैं इसे 2 संस्करणों में बुनाई करना चाहता हूं: समाधान के साथ और बिना, जितना संभव हो सके स्रोत को बदलना, और संकलन करना।कंधे

मुझे पता है कि मैं सशर्त रूप से आर कोड का मूल्यांकन करने और भूखंडों और आर आउटपुट दिखाने के लिए लॉजिकल चर का उपयोग कर सकता हूं, लेकिन मुझे नहीं पता कि ब्लॉक (मार्कडाउन और लाटेक्स) स्वरूपित पाठ के ब्लॉक को कैसे दिखाया/छुपाएं, जब तक कि मैं नहीं डालूं आर चरित्र वैक्टर में वह सब पाठ, जो चीजों को साफ और पठनीय रखने के लिए कठिन लगता है।

मैं पुराने सवाल

Conditionally display a block of text in R Markdown

जहां समाधान सरल छोटे पाठ, जो आर प्रिंट() फ़ंक्शन के तर्क के रूप में शामिल किया गया था के लिए दिया गया था पाया।

यह अन्य पुराने सवाल

insert portions of a markdown document inside another markdown document using knitr

एक पिता दस्तावेज़ और बच्चे दस्तावेज है जो सशर्त संकलित किया गया होने के लिए था, लेकिन मैं इतने सारे टुकड़ों में मेरे दस्तावेज़ काट करने के लिए नहीं करना चाहती।

+0

व्हाउप्स। भूल जाओ जो मैंने पहले लिखा था। आप पाठ के प्रदर्शन को नियंत्रित करना चाहते हैं, आउटपुट नहीं। हम्म। – TARehman

उत्तर

11

आप asis इंजन का उपयोग knitr में मनमाने ढंग से पाठ को सशर्त रूप से शामिल/बहिष्कृत करने के लिए कर सकते हैं, उदाहरण के लिए

```{asis, echo=FALSE} 
Some arbitrary text. 

1. item 
2. item 

Change echo=TRUE or FALSE to display/hide this chunk. 
``` 

लेकिन मैं सिर्फ इस इंजन और fixed it में एक बग की खोज की। जब तक आप knitr> = 1.11.6 का उपयोग नहीं करते हैं, तो आप अपने द्वारा सरल asis इंजन बना सकते हैं, उदा।

```{r setup, include=FALSE} 
library(knitr) 
knit_engines$set(asis = function(options) { 
    if (options$echo && options$eval) paste(options$code, collapse = '\n') 
}) 
``` 

यदि आप टेक्स्ट में इनलाइन आर अभिव्यक्तियों को शामिल करना चाहते हैं, तो आपको टेक्स्ट को बुनाई होगी, उदा।

```{r setup, include=FALSE} 
library(knitr) 
knit_engines$set(asis = function(options) { 
    if (options$echo && options$eval) knit_child(text = options$code) 
}) 
``` 
+0

धन्यवाद @ यहुई, लेकिन मैं उन पाठ ब्लॉक में आर कोड के इनलाइन मूल्यांकन, जैसे '' आर 3 + 2'', शामिल करना चाहता हूं और परिणाम सीधे देख सकता हूं (5)। जब मैं इसे आपके अच्छे उदाहरण में शामिल करता हूं तो यह काम नहीं करता है :( – PabloGregori

+1

@PabloGregori ने मेरा उत्तर अपडेट किया। –

+0

@Yihui, अच्छा जवाब! आपके फिक्स के साथ ठीक काम करता है। बस ध्यान दिया गया कि '## शीर्षक' इरादे के रूप में प्रस्तुत नहीं किया गया है, जबकि 'शीर्षक \ n ===' आरएमडी फ़ाइल में अच्छी तरह से काम करता है और rstudio इंजन का उपयोग कर। – aurelien

संबंधित मुद्दे