कोड तालिकाओं का निर्माण होता है जो बाद में अन्य कोड खंडों द्वारा उपभोग की जाने वाली org तालिकाओं का निर्माण करते हैं


9

मुझे कोड ब्लॉक के साथ थोड़ी परेशानी हो रही है जो बाद में अन्य कोड ब्लॉक द्वारा उपभोग किए जाने वाले org तालिकाओं का उत्पादन करते हैं। उदाहरण के लिए:

#+NAME: upper_air
#+BEGIN_SRC clojure :results output raw
  (clojure.pprint/print-table table)
#+END_SRC 

उत्पादन करेंगे

#+RESULTS: upper_air
|      :m | :degree | :meter/second |      :degC | :millibar |
|---------+---------+---------------+------------+-----------|
|  1545.0 |   175.0 |         12.36 |  15.400001 |     850.0 |
|  3162.0 |   265.0 |          6.69 |        4.8 |     700.0 |

लेकिन मैं वास्तव में क्या चाहूंगा

#+TBLNAME: upper_air
|      :m | :degree | :meter/second |      :degC | :millibar |
|---------+---------+---------------+------------+-----------|
|  1545.0 |   175.0 |         12.36 |  15.400001 |     850.0 |
|  3162.0 |   265.0 |          6.69 |        4.8 |     700.0 |

(नोट #+RESULTSबनाम #+TBLNAME) ताकि बाद में मैं ऐसा कुछ कर सकूं

#+BEGIN_SRC ipython :session  :var data=upper_air
import numpy as np

arr = np.array(data)
p = arr[:,4]
#+END_SRC

#+RESULTSपरिणाम के साथ , दूसरा कोड ब्लॉक data डेटा टेबल के बजाय एक स्ट्रिंग के रूप में तर्क की व्याख्या करेगा और मैं डेटा को सीधे तरीके से निकालने में सक्षम नहीं होगा। मैं ASCII डेटा को 'मैन्युअल रूप से' पायथन डेटा संरचना में परिवर्तित कर सकता हूं, लेकिन मैं पसंद करूंगा कि org मेरे लिए इसे संभाल लेगा :-) क्या #+TBLNAMEइसके बजाय उत्पादन के लिए पहले कोड ब्लॉक के लिए कोई रास्ता है #+RESULTS? वैकल्पिक रूप से, क्या दूसरा कोड एक स्ट्रिंग के बजाय ऑर्ग टेबल के रूप में तर्क को रोक सकता है?


2
आम तौर पर, अगर एक बेबल स्रोत ब्लॉक एक तालिका का उत्पादन करने के लिए होता है, तो यह दो-आयामी वेक्टर उत्पन्न करता है। अगर क्लोजर कोड ने ऐसा किया है कि एक स्ट्रिंग उत्पन्न करने के बजाय, आपको अपने कोड में कुछ भी बदलना नहीं पड़ेगा। शायद Clojure में एक वेक्टर का उत्पादन करने के लिए एक रास्ते की तलाश कर रहा है?
wvxvw

@wvxvw टिप्पणी को धन्यवाद। मुझे लगता है कि मैं यहां थोड़ा भ्रमित हूं। मुझे लगा कि पूरे बिंदु org मोड सादे पाठ है। आप जो देख रहे हैं वही आपको मिलेगा। लेकिन आप सुझाव दे रहे हैं कि # + परिणाम ब्लॉक के पीछे कुछ प्रकार की डेटा संरचना है जो स्ट्रिंग या कुछ नेस्टेड डेटा संरचना हो सकती है।
जुलिएन चास्तांग

2
नहीं, यह मैं नहीं कह रहा हूँ। मेरा मानना ​​है कि clojure.pprint/print-tableOrg तालिका के रूप में स्वरूपित एक स्ट्रिंग लौटाता है, और जब से आप शीर्षलेख तर्क सेट करते हैं outputऔर raw, आपको वह मिलता है जो आपको मिलता है। हालाँकि, जब आप इसे दूसरी बार उपयोग करते हैं, तो ऑर्ग परिणामी तालिका को नहीं पढ़ता है, इसके बजाय, यह क्लॉज्योर ब्लॉक का पुनर्मूल्यांकन करता है और इसका परिणाम पायथन ब्लॉक को खिलाता है। हालाँकि, अगर क्लॉजुर ब्लॉक एक 2 डी सरणी का उत्पादन करता है, तो आप परिणाम को बदल सकते हैं valueऔर rawऑर्ग के लिए तालिका के रूप में परिणाम के लिए प्रारूप नहीं कर सकते हैं , और आप इसे पायथन ब्लॉक में 2 डी सरणी के रूप में प्राप्त करेंगे।
wvxvw

@wvxvw org-babel हैडर तर्कों को समझने में मेरी मदद करने के लिए फिर से धन्यवाद। कुछ प्रयोग के बाद, मैं देख सकता हूं कि आप जो वर्णन करते हैं वह वास्तव में ऐसा प्रतीत होता है, और मुझे इसके साथ चलने में सक्षम होना चाहिए। हालांकि, ऐसा प्रतीत होता है कि मैं "अमीर" -स्टाइल ओआरजी-तालिकाओं का उपयोग नहीं कर सकता, विशेष रूप से एक मध्यवर्ती प्रारूप के रूप में इनकी तारें हैं क्योंकि ये तार और डेटा नहीं हैं (उदाहरण के लिए, क्लोजर नेस्टेड वेक्टर) अभ्यावेदन। किसी भी दर पर, मैं org-babel के साथ सुपर-खुश रहा हूं और इसे Jupyter का एक बेहतर विकल्प मानता हूं (यदि आप एक emacs उपयोगकर्ता हैं, तो निश्चित रूप से :-)) आपकी मदद के लिए फिर से धन्यवाद।
जुलिएन चास्टांग

जवाबों:


6

आपको अपने टेबल ब्लॉक को एक सरणी (या वेक्टर या सूची, आदि ...) इस तरह से वापस करने की आवश्यकता है। आप किसी के साथ क्षैतिज रेखाएं या क्लोजर में शून्य या जो भी समकक्ष प्रकार प्राप्त कर सकते हैं।

#+NAME: upper_air
#+BEGIN_SRC python :results value
return [[":m", ":degree",":meter/second", ":degC", ":millibar"],
        None,
        [1545.0, 175.0, 12.36, 15.40001, 850.0],
        [3162.0, 265.0, 6.69, 4.8, 700.0]]

#+END_SRC

#+RESULTS: upper_air
|     :m | :degree | :meter/second |    :degC | :millibar |
|--------+---------+---------------+----------+-----------|
| 1545.0 |   175.0 |         12.36 | 15.40001 |     850.0 |
| 3162.0 |   265.0 |          6.69 |      4.8 |     700.0 | 


#+BEGIN_SRC python :results value  :var data=upper_air
import numpy as np

arr = np.array(data)
p = arr[:,4]
return p
#+END_SRC  

#+RESULTS:
| 850 | 700 |
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.