2013-03-26 5 views
12

this answer में, @Yihui ने कहा कि knitr वैश्विक पर्यावरण का उपयोग करता है। यह मुझे भ्रमित कर दिया - मेरा अनुभव यह था कि यह नहीं करता है। मैं वास्तव में कभी भी knit का उपयोग नहीं करता, हालांकि, मैं आमतौर पर सीधे पीडीएफ में जाता हूं।knit2pdf वैश्विक पर्यावरण का उपयोग कर सकते हैं?

एक छोटे से प्रयोग में, यह है कि knit वैश्विक वातावरण (या जो भी पर्यावरण आप envir तर्क का उपयोग उल्लेख करें) का उपयोग करता है लगता है, लेकिन यह है कि knit2pdf नहीं करता है।

मिनिमल उदाहरण: global_test.Rnw फ़ाइल

\documentclass{article} 
\begin{document} 
<<>>= 
    print(x) 
@ 
\end{document} 

आर स्क्रिप्ट:

x <- "Hello World" 
knit(input="global_test.Rnw") 
# Works as expected, could now call tools::texi2pdf to generate pdf. 

knit2pdf(input="global_test.Rnw") 
# Doesn't 

बाद पीडीएफ फाइल कि प्रदर्शित नहीं करेगा उत्पन्न करता है और एक चेतावनी देता है:

running command '"C:\PROGRA~2\MIKTEX~1.9\miktex\bin\texi2dvi.exe" --quiet --pdf 
"global.pdf" -I "C:/PROGRA~1/R/R-215~1.3/share/texmf/tex/latex" -I 
"C:/PROGRA~1/R/R-215~1.3/share/texmf/bibtex/bst"' had status 1 

मैंने knit2pdf (envir = globalenv()) को पर्यावरण पारित करने की कोशिश की) उम्मीद है कि यह बी होगा ई ... पास हो गया, मुझे बस एक अप्रयुक्त तर्क त्रुटि मिल गई।

आम तौर पर, मुझे पता है कि वैश्विक वातावरण को संदर्भित खराब फार्म है, लेकिन वहां knit2pdf साथ यह करने के लिए, या एक वातावरण स्पष्ट रूप से पारित करने के लिए एक तरीका है, या मैं एक ही करने के लिए बेहतर @Ramnath's answer में के रूप में brew और sprintf का उपयोग कर रहा हूँ ऊपर सवाल?

मेरे उपयोग के मामले में, मुझे नहीं लगता कि tools::texi2pdf उपयोगी है क्योंकि मुझे XeLaTeX के साथ संकलन करने की आवश्यकता है, जो knit2pdf आसानी से संभालती है।

+0

क्या आपने 'envir' पैरामीटर को 'knit2pdf' में स्पष्ट रूप से सेट करने का प्रयास किया है? – krlmlr

+0

हाँ, मुझे बस एक अप्रयुक्त तर्क त्रुटि मिलती है। – Gregor

+0

क्या आपने वैश्विक वैरिएबल को संदर्भित किए बिना इसे आजमाया है? जब मैं 'knit2pdf()' का उपयोग करने का प्रयास करता हूं, तो मुझे बिल्कुल वही त्रुटि मिलती है, जब आर कोड की एक पंक्ति 'प्रिंट ("हैलो वर्ल्ड") '(यानी जब वैश्विक चर के लिए कोई स्पष्ट संदर्भ नहीं है) ... I एक विंडोज एक्सपी बॉक्स पर, आर-डेवेल का उपयोग करके, और 'knitr_1.1', हुड के नीचे एक मिकटेक्स डिस्ट्रो के साथ। –

उत्तर

7

प्रश्न में उदाहरणों के साथ समस्याएं पर्यावरण के साथ कुछ भी नहीं करती हैं। output तर्क knit2pdf से छोड़ा गया है, तो सबकुछ ठीक से संकलित होगा और बिना चेतावनी के।

संदर्भ के लिए, मैं विंडोज 7 पर आर 2.15.3 पर knitr 1.1 का उपयोग कर रहा था। मैं यूहुई को knit2pdf में एक बग प्रतीत होता हूं (जो tools::texi2pdf पर कॉल करता है, जो आउटपुट फ़ाइल पथ को स्वीकार नहीं करता है)।

अद्यतन: समस्या knitr, available here के विकास संस्करण में तय की गई है।

यह भी ध्यान देने योग्य बात है कि में Compile PDF बटन RStudio अपने वर्तमान वातावरण का उपयोग नहीं करता, इसलिए यदि आप वैश्विक चर के लिए उपयोग करना चाहते हैं और आप RStudio उपयोग कर रहे हैं लायक है, उचित knit कार्य करने के लिए एक स्पष्ट कॉल करने शॉर्टकट पर भरोसा करने के बजाय। वास्तव में, यह सीधे knit2pdf का उपयोग नहीं करता है, बल्कि यह rmarkdown::render पर कॉल करता है।

+0

इस मुद्दे की रिपोर्ट करने के लिए धन्यवाद! वास्तविक कहानी यह है कि, 'knitr' 1.1 में' envir' तर्क नहीं है; 'knitr' के विकास संस्करण ने इसे जोड़ा, लेकिन बाद में 'आउटपुट' तर्क हटा दिया। अब नवीनतम विकास संस्करण में दोनों तर्क हैं, और 'knit2pdf()' अभी ठीक काम करना चाहिए। –

+1

@Yihui धन्यवाद! और अद्भुत पैकेज के लिए धन्यवाद! – Gregor

+0

मैं आर मार्कडाउन के साथ Rstudio का उपयोग कर रहा हूँ। क्या यह मार्कडाउन दस्तावेज़ों पर भी लागू होता है? मैं एक कैश किए गए खंड के अंदर एक स्क्रिप्ट चलाने के लिए स्रोत() का उपयोग कर रहा हूं। मैं उस स्क्रिप्ट में बाद के हिस्सों में गणना की गई वस्तुओं का उपयोग करना चाहता हूं, लेकिन उन वस्तुओं को बाद के हिस्सों में उपलब्ध नहीं लगता है। क्या आप स्पष्ट कर सकते हैं कि मुझे क्या करना है? –

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