ฉันมีปัญหาเล็กน้อยกับบล็อคโค้ดที่สร้างตาราง 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 เป็นโครงสร้างข้อมูล Python 'ด้วยตนเอง' แต่ฉันต้องการ org จัดการกับมันสำหรับฉัน :-) มีวิธีใดบ้างในการบล็อกโค้ดแรกที่ให้ผลลัพธ์#+TBLNAME
แทนที่จะเป็น#+RESULTS
? บล็อกโค้ดที่สองสามารถบังคับให้อาร์กิวเมนต์เป็นตาราง org แทนที่จะเป็นสตริงได้หรือไม่?
clojure.pprint/print-table
ส่งคืนสตริงที่จัดรูปแบบเป็นตาราง Org และเมื่อคุณตั้งค่าอาร์กิวเมนต์ส่วนหัวให้เป็นoutput
และraw
คุณจะได้รับสิ่งที่คุณได้รับ อย่างไรก็ตามเมื่อคุณใช้งานเป็นครั้งที่สอง Org จะไม่อ่านตารางผลลัพธ์ แต่จะประเมินบล็อก Clojure อีกครั้งและส่งผลลัพธ์ไปยังบล็อก Python อย่างไรก็ตามหากบล็อก Clojure สร้างอาร์เรย์ 2 มิติคุณสามารถเปลี่ยนผลลัพธ์ที่จะเป็นvalue
และไม่raw
ให้องค์กรจัดรูปแบบผลลัพธ์เป็นตารางและคุณจะได้รับมันเป็นอาร์เรย์ 2 มิติในบล็อกหลาม