কোড ব্লকগুলি 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? বিকল্পভাবে, দ্বিতীয় কোড ব্লকটি স্ট্রিংয়ের পরিবর্তে একটি org টেবিল হিসাবে আর্গুমেন্টকে বাধ্য করতে পারে?


2
সাধারণত, যদি কোনও বাবেল উত্স ব্লকটি কোনও টেবিল তৈরির উদ্দেশ্যে বোঝানো হয় তবে এটি দ্বিমাত্রিক ভেক্টর তৈরি করে। ক্লোজার কোড যদি স্ট্রিং তৈরির পরিবর্তে এটি করে থাকে তবে আপনাকে আপনার কোডে কোনও পরিবর্তন করতে হবে না। ক্লোজুরে ভেক্টর উত্পাদন করার জন্য উপায় খুঁজছেন হতে পারে?
wvxvw

@wvxvw মন্তব্যটি ধন্যবাদ। আমার ধারণা আমি এখানে কিছুটা বিভ্রান্ত। আমি ভেবেছিলাম পুরো পয়েন্ট org মোডটি সরল পাঠ্য। আপনি যা দেখতে পান তা হ'ল তবে আপনি পরামর্শ দিচ্ছেন বলে মনে হচ্ছে যে # + RESULTS ব্লকের পিছনে কিছু ধরণের ডেটা স্ট্রাকচার রয়েছে যা স্ট্রিং বা কিছু নেস্টেড ডেটা স্ট্রাকচার হতে পারে।
জুলিয়েন চস্তং

2
না, আমি যা বলছি তা নয়। আমি যে বিশ্বাস করি clojure.pprint/print-tableআয় একটি স্ট্রিং অর্গ টেবিল হিসাবে ফরম্যাট করা এবং যেহেতু আপনি সেট হেডার যুক্তি হতে outputএবং raw, আপনি কি পেতে পেতে। যাইহোক, আপনি যখন এটি দ্বিতীয়বার ব্যবহার করবেন তখন অর্গ ফলাফল টেবিলটি পড়বে না, পরিবর্তে এটি ক্লোজার ব্লকটি পুনরায় মূল্যায়ন করে এবং এর ফলাফলটি পাইথন ব্লকে ফিড করে। তবে, ক্লোজার ব্লকটি যদি 2 ডি অ্যারে তৈরি করে, তবে আপনি ফলাফলটি পরিবর্তন করতে পারেন valueএবং rawঅর্গের পক্ষে ফলাফলটি একটি টেবিল হিসাবে ফর্ম্যাট করতে পারেন এবং আপনি পাইথন ব্লকে এটি 2D অ্যারে হিসাবে পেতে পারেন।
wvxvw

@wvxvw org-ব্যাবেল শিরোনাম যুক্তি বুঝতে আমাকে সহায়তা করার জন্য আবার ধন্যবাদ। কিছু পরীক্ষা-নিরীক্ষার পরে, আমি দেখতে পাচ্ছি যে আপনি যা বর্ণনা করেছেন তা বাস্তবে হ'ল বলে মনে হচ্ছে এবং আমার এটি চালানো উচিত। যাইহোক, এটি উপস্থিত হয় আমি বিশেষত মধ্যবর্তী ফর্ম্যাট হিসাবে "সমৃদ্ধ"-স্টাইল org-টেবিলগুলি ব্যবহার করতে পারি না কারণ এগুলি স্ট্রিং এবং ডেটা নয় (যেমন ক্লোজার নেস্টেড ভেক্টর) উপস্থাপনা। যাইহোক, আমি org-babel নিয়ে অত্যন্ত খুশি হয়েছি এবং এটিকে Jupyter এর একটি উচ্চতর বিকল্প হিসাবে বিবেচনা করি (আপনি যদি ইমাস ব্যবহারকারী হন তবে অবশ্যই :-)) আপনার সহায়তার জন্য আবারও ধন্যবাদ।
জুলিয়ান চস্তং

উত্তর:


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 |
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.