2015-02-13 22 views
18

एक आर मार्कडाउन फ़ाइल के साथ, मैं विभिन्न संभावित आउटपुट पीडीएफ दस्तावेज़ बनाना चाहता हूं, जहां आउटपुट फ़ाइल नाम दस्तावेज़ के भीतर परिभाषित किया जाना चाहिए। क्या इस तरह से आउटपुट फ़ाइल नाम में हेरफेर करने के लिए मार्कडाउन को मनाने का कोई तरीका है? आदर्श रूप से मैं एक फाइल के नाम से फ़ाइल नाम पास करना चाहता हूं।आर मार्कडाउन - परिवर्तनीय आउटपुट नाम

+0

क्या आप अपना आदेश पोस्ट कर सकते हैं? क्या आप फ़ाइलों को "गतिशील रूप से" नाम देना चाहते हैं? 'paste0 (" file _ ", x,"। pdf ")?' x एक दिनांक या डेटासेट का नाम – rmuc8

+0

हो सकता है अब तक मैं RStudio का उपयोग कर रहा था, वास्तव में अधिक जानकारी के बिना बुनाई कमांड कर रहा था। लेकिन मुझे इलियास जवाब में नज़दीक दिखना चाहिए, एक बहुत स्पष्ट दृष्टिकोण की तरह लगता है। – Sosel

उत्तर

23

आप गैर-दस्तावेजी knit हुक (डिफ़ॉल्ट बुलाया समारोह का उपयोग कर फिर से परिभाषित करने के लिए क्या बटन करता है के द्वारा RStudio Knit बटन और एक YAML हैडर के reproducibility का उपयोग कर की सादगी रख सकते rmarkdown::render है)। रेंडर फ़ंक्शन का output_file पैरामीटर फ़ाइल नाम निर्दिष्ट करता है, इसलिए इसे सेट करके आप इनपुट उपनाम के समान उपसर्ग का उपयोग करने के मानक व्यवहार को ओवरराइड करते हैं।

उदा। हमेशा उत्पादन के लिए एक फ़ाइल बुलाया myfile.pdf

knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding, output_file = file.path(dirname(inputFile), 'myfile.pdf')) }) 

समारोह एक गुमनाम एक लाइनर के साथ ही एक पैकेज से आयात किया जा सकता है, के रूप में slidify साथ here देखा।

आप अपने स्वयं के वाईएएमएल हेडर सेट कर सकते हैं (मुझे नहीं पता कि यह आमतौर पर वैसे भी सलाह दी जाती है), rmarkdown::metadata$newheader के तहत सुलभ है, लेकिन जहां तक ​​मैं देख सकता हूं, वे इस तरह के फ़ंक्शन के भीतर से प्रतीत नहीं होते हैं।

आर आर खंड से फ़ाइल नाम पास करने के लिए ... यदि आप वाईएएमएल हेडर के नीचे कोड भाग का जिक्र कर रहे हैं, तो मेरे अनुभव से मुझे नहीं लगता कि यह संभव है (?)। हेडर में इनलाइन आर कमांड (एकल बैकटिक-संलग्न, r से शुरू हो सकता है), लेकिन प्रतीत होता है कि यह हुक फ़ंक्शन नहीं है।

संबंधित:

+0

rmarkdown में त्रुटि :: मेटाडाटा $ शीर्षक <- "मेरा शीर्षक": ऑब्जेक्ट 'rmarkdown' नहीं मिला – jzadra

+0

@yihuixie, क्या मैं पैरा पास कर सकता हूं $ आउटपुट फ़ाइल नामों में जो कुछ भी इस तरह से? मेरा मार्कडाउन प्रासंगिक डेटा फ़ाइल लेने के लिए $ डेटा को पैराम का उपयोग करता है, लेकिन यह आपके एक-लाइनर के भीतर इस तरह की काम नहीं दिखता है - 'पैराम $ डेटा नहीं मिला'। मैं जो कुछ भी चाहता हूं उसे 'rmarkdown :: रेंडर (पैराम्स = सूची (डेटा = "Oct2017data"), output_file = "Oct2017_analysis.html") के साथ जो कुछ भी मैं चाहता हूं उसे पास कर सकता हूं, लेकिन जाहिर है, मैं इसे केवल एक बार टाइप करने में सक्षम होना चाहता हूं। – StasK

14

यह काफी मैं क्या कर रहा है:

rmarkdown::render('my_markdown_report.Rmd', 
        output_file = paste('report.', Sys.Date(), 
             '.pdf', sep='')) 

मैं तीन स्क्रिप्ट - एक डेटा और यह प्रक्रिया, रिपोर्ट के लिए दूसरा बनाई चार्ट & टेबल खींचती है। तीसरा एक मार्कडाउन फ़ाइल के आधार पर रिपोर्ट बनाता है। कोड ऊपर दिखने वाला तीसरा स्क्रिप्ट का हिस्सा है

+0

अभी तक मैं केवल कुछ मार्कडाउन फ़ाइल संकलित करने के लिए RStudios बुनाई कमांड का उपयोग कर रहा था।अगर मैं आपको सही ढंग से समझता हूं, तो आप आर कमांड का उपयोग करके वास्तविक मार्कडाउन फ़ाइल बनाते हैं, और आर कमांड का उपयोग करके मार्कडाउन के बुनाई को भी चलाते हैं? मुझे अब तक इस दृष्टिकोण से अवगत नहीं था, लेकिन मैं एक नजदीकी नजर रखूंगा। अब तक मैं डेटा तैयार कर रहा था और इसे पहली स्क्रिप्ट में संसाधित कर रहा था, लेकिन पहले से ही दूसरे चरण में मैंने मैन्युअल रूप से एक मार्कडाउन फ़ाइल बनाई, उदा। कुछ रिपोर्ट में विभिन्न डेटा स्रोत। – Sosel

+0

हां। मार्कडाउन फ़ाइल अलग-अलग स्क्रिप्ट है, यह डेटा स्थान चार्ट और तालिकाओं को एक साथ पढ़ती है। इसे बाहरी स्क्रिप्ट से कहा जाता है - आप इसे Rstudio से भी प्रारंभ/निष्पादित कर सकते हैं और उसी नाम से फ़ाइल बनायेंगे। हालांकि मैं इसे अलग-अलग स्क्रिप्ट से कॉल करता हूं और rmarkdown के बाद पीडीएफ बनाता है जिसके परिणामस्वरूप फ़ाइल को विभिन्न स्थानों में कॉपी किया जाता है – ilya

2

on more elaborate uses of the knit: hook/इसी निम्नलिखित मैंने लिखा लिखा था, इस वेबपेज उनके पास वर्णन करने का एक अच्छा उदाहरण है कि वे क्या वर्णन कर रहे हैं, यही है कि एक से कई, पुन: उत्पादित रिपोर्ट कैसे बनाएं .एमडी दस्तावेज़ :

http://www.reed.edu/data-at-reed/software/R/markdown_multiple_reports.html

वेबपेज दो स्क्रिप्ट, एक आर स्क्रिप्ट और कई रिपोर्ट बनाने के लिए एक Rmarkdown स्क्रिप्ट का उपयोग करता है। मैंने इसे अपने काम के लिए टेम्पलेट के रूप में इस्तेमाल किया है और इसे बहुत उपयोगी पाया है।

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