2012-06-08 15 views

उत्तर

62

सामान्य समाधान (आर संस्करण की परवाह किए बिना काम करता है):

Rscript -e "library(knitr); knit('myfile.Rmd')" 

आर 3.1.0 के बाद से, R CMD Sweave गैर Sweave दस्तावेजों (हालांकि आदेश नाम एक छोटे से अजीब लगता है) का समर्थन करने के लिए शुरू कर दिया गया है, और केवल एक चीज जो आपको करने की ज़रूरत है वह है अपने दस्तावेज़ में एक विग्नेट इंजन निर्दिष्ट करना, उदाहरण के लिए

%\VignetteEngine{knitr::knitr} 

knitr में संभव शब्दचित्र इंजन देखने के लिए, का उपयोग

library(knitr) 
library(tools) 
names(vignetteEngine(package = 'knitr')) 
# "knitr::rmarkdown" "knitr::knitr" "knitr::docco_classic" "knitr::docco_linear" 
+0

अरे ... मैं इसे पोस्ट करने जा रहा था लेकिन मुझे लगा कि मैं थोड़ा सा जांच कर रहा हूं कि कम शर्मीली विकल्प था ... – Dason

+5

क्या है कितना स्वादिष्ट? वास्तव में आर में बनाया जा रहा है, आप ज्यादा बेहतर नहीं कर सकते हैं। मेरे मेकफ़ाइल में '$ (आरएससीआरआईपीटी) -e" लाइब्रेरी (बुनाई) है; बुनाई (\ "$ *। आरएनडब्ल्यू \") "' –

+2

शानदार। इस विशेष उदाहरण में, मैं अभी भी आर मार्कडाउन के बजाय लाटेक्स का उपयोग कर रहा था, इसलिए यह 'रुपये-लिपि लाइब्रेरी (knitr) था; बुनाई (' myfile.rnw ') "' –

22

मैं एक knitme.R स्क्रिप्ट है:

library(knitr) 
render_html() 
source("hooks.R") # mods to defaults 
inFile = commandArgs(trailingOnly=TRUE)[1] 
outFile = commandArgs(trailingOnly=TRUE)[2] 
knit(inFile,output=outFile) 

तो मैं तो कर सकते हैं

Rscript knitme.R $SOURCE $TARGET 

जहां $SOURCE और $TARGET आवश्यक हैं।

तुम भी Make में इस एकीकृत कर सकता है, ताकि आप एक नियम है कि तुम सब करना पड़ा था था:

make myfile.html 

और यह myfile.Rhtml के पास जाकर HTML फ़ाइल का उत्पादन होगा। मैं के बजाय SCons के साथ उपयोग कर रहा हूँ .Rnw

से पीडीएफ बनाने के लिए

समायोजित करें, तो मैं एक Sconscript फ़ाइल जो थोड़ा और अधिक जटिल है (किया है आंशिक रूप से, क्योंकि मैं केवल अभी SCons उपयोग करने के लिए सीखने शुरू कर दिया, तो यह crufty थोड़ा)

env=Environment() 
bld = Builder(action = '/usr/bin/Rscript knitme.R $SOURCE $TARGET', 
       suffix='.html', 
       src_suffix='Rhtml') 
env.Append(BUILDERS = {'Knit' : bld}) 
env.Knit(source='test.Rhtml',target='test.html') 

हो सकता है तो फिर सब मैं क्या करने की जरूरत है:

scons test.html 

और मैं test.htmltest.Rhtml से बनाया गया है, तो test.Rhtml बदल गया है मिलता है।

यह .. एक Sconstruct फ़ाइल है कि एक संपूर्ण वेब साइट और यह प्रतियां किसी सर्वर के लिए बनाता है, अन्य निर्भरता के सभी प्रकार के आधार पर का हिस्सा है

बहती विषय से हटकर अब ...

+0

मैं इसे स्कैनस्ट्रक्चर के साथ काम करने के लिए अभी तक नहीं मिला। मुझे पसंद है, http://tex.stackexchange.com/a/26573/8272 –

2
R CMD knit file.Rmd 

प्रत्यक्ष आर सीएमडी Sweave file.Rmd

हाल ही में, वहाँ बढ़ा रहे हैं कार्यों के लिए गंदा इस तरह का काम के लिए rmarkdown और knitr में बराबर है।स्लाइड्स के लिए, मैं इरादा उत्पादन प्रारूप को नामित करने Rmarkdown YAML हेडर का उपयोग करके किया गया है और कमांड लाइन बुनियादी है अन्य उत्तर के लिए पर जोड़ने के लिए, यदि आप बुनी करना चाहते हैं/फ़ाइल प्रस्तुत करना

R -e "library(rmarkdown); render(\"file.Rmd\")" 
3

की तरह, और सभी एक पंक्ति में उत्पादन खोलने आप का उपयोग कर सकते हैं:

Rscript -e "rmarkdown::render('file.Rmd')" & open file.pdf 

मैं यह सब एक पंक्ति में क्या करना पसंद करते हैं, क्योंकि यह आसान है एक पुन: प्रयोज्य विम आदेश के रूप में चलाने के लिए।

यदि आप अपने सिस्टम के गैर-डिफ़ॉल्ट का उपयोग करना चाहते हैं तो आप open को एक विशिष्ट एप्लिकेशन के साथ भी बदल सकते हैं। अगर मैं विंडोज़ पर हूं तो मैं इसका उपयोग करता हूं और वर्तमान में खुला पीडीएफ आउटपुट ओवरराइट करने के लिए सुमात्रा का उपयोग करना चाहता हूं (इसलिए मुझे इसे हर बार बंद करना याद नहीं है)।

+0

में कुछ ऐसा है जिसे इसे 'स्कैनस्ट्रक्चर' फ़ाइल में बिल्डर के रूप में जोड़ा गया है। देखें: http://stackoverflow.com/a/38806488/1172302। –

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