2012-11-10 17 views
7

कुछ इस तरह है, लेकिन यह काम नहीं करता है:इंजन = "bash" का उपयोग कर knitr भागों के बीच चर साझा करना संभव है?

```{r examples, engine="bash"} 
    export EXAMPLES="example/path" 
``` 

```{r example1, engine="bash"} 
    echo $EXAMPLES 
``` 

यह काम करता है, तथापि:

```{r examples2, engine="bash"} 
    export EXAMPLES="example/path" 
    echo $EXAMPLES 
``` 
+0

आप एक बग रिपोर्ट दर्ज करना चाहते हैं: https://github.com/yihui/knitr/issues – Dason

+2

बस FYI, यह रनर पैकेज के साथ अब संभव है: https://github.com/yihui/runr लेकिन मुझे अभी भी इसे knitr में एकीकृत करने से पहले इसे पॉलिश करने की आवश्यकता है (उदाहरण http://rpubs.com/yihui/bash-knitr) –

उत्तर

4

एक बड़ा सवाल है कि! यह कुछ भी है जो मैं वास्तव में पूरा करना चाहता हूं लेकिन यह नहीं जानता कि इसे कैसे किया जाए (अगर कोई मेरी मदद कर सकता है तो मैं सराहना करता हूं)। यह केवल bash के लिए उपयोगी नहीं है, बल्कि knitr में python, ruby और अन्य सभी इंजनों के लिए भी उपयोगी नहीं है। इस समय यह काम नहीं करता है कि knitr सिर्फ system('engine -arg code') के माध्यम से कोड चलाता है, यानी प्रत्येक कोड खंड के लिए, एक नया इंजन सत्र खोला जाता है, इसलिए सभी हिस्सों को अनिवार्य रूप से विभिन्न प्रक्रियाओं में निष्पादित किया जाता है।

आदर्श रूप से मैं एक इंजन चाहता हूं जो एक सत्र खोलता है और नए कोड को सुनता रहता है, लेकिन मुझे यकीन नहीं है कि यह संभव है या नहीं। AFAIK, चर साझा करने का एकमात्र तरीका उन्हें फाइलों में लिखना है, जो स्पष्ट रूप से अजीब है।

+0

तो, यह आर के लिए कैसे काम करता है? – nachocab

+0

@nachocab आर कोड को बहुत अलग तरीके से संभाला जाता है: सभी आर कोड भाग समान आर सत्र साझा करते हैं, इसलिए चर के रूप में चर को –

+0

में साझा किया जा सकता है, क्या आर कोड का उपयोग करके बैश चर को पॉप्युलेट करना संभव होगा? इस तरह से मैं उन सभी चर के साथ प्रारंभिक आर खंड सेट कर सकता हूं जिन्हें मैं उपयोग करना चाहता हूं और उन्हें इंजन = "बाश" खंड से कॉल कर सकता हूं। – nachocab

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