У мене виникають проблеми з кодовими блоками, які створюють таблиці таблиць 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 обробляти це для мене :-) Чи існує спосіб, щоб перший блок коду вийшов a #+TBLNAME
замість #+RESULTS
? Або, чи може другий блок коду примусити аргумент як таблиця org замість рядка?
clojure.pprint/print-table
повертає рядок, відформатовану як таблицю Org, і оскільки ви встановите аргумент заголовка таким чином, output
і raw
ви отримуєте те, що отримуєте. Однак, коли ви використовуєте його вдруге, Org не читає отриману таблицю, натомість він повторно оцінює блок Clojure і подає його результат до блоку Python. Однак, якби блок Clojure створив 2D масив, ви можете змінити результат на, value
а не raw
для Org, щоб форматувати цей результат у вигляді таблиці, і ви отримаєте його як 2D масив у блоці Python.