J'ai un peu de mal avec les blocs de code qui produisent des tables d'organisation qui seront ensuite consommées par d'autres blocs de code. Par exemple:
#+NAME: upper_air
#+BEGIN_SRC clojure :results output raw
(clojure.pprint/print-table table)
#+END_SRC
produira
#+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 |
mais ce que j'aimerais vraiment c'est
#+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 |
(note #+RESULTS
vs #+TBLNAME
) pour que je puisse ensuite faire quelque chose comme
#+BEGIN_SRC ipython :session :var data=upper_air
import numpy as np
arr = np.array(data)
p = arr[:,4]
#+END_SRC
Avec le #+RESULTS
résultat, le deuxième bloc de code interprétera l' data
argument comme une chaîne au lieu d'une table de données et je ne pourrai pas extraire les données de manière simple. Je pourrais convertir les données ASCII en une structure de données Python «manuellement», mais je préférerais que l'organisation s'en occupe pour moi :-) Existe-t-il un moyen pour le premier bloc de code de produire un #+TBLNAME
au lieu de #+RESULTS
? Alternativement, le deuxième bloc de code peut-il contraindre l'argument en tant que table org au lieu d'une chaîne?
clojure.pprint/print-table
renvoie une chaîne au format Org table, et puisque vous définissez l'argument d'en-tête sur output
et raw
, vous obtenez ce que vous obtenez. Cependant, lorsque vous l'utilisez une deuxième fois, Org ne lit pas la table résultante, mais réévalue le bloc Clojure et transmet son résultat au bloc Python. Cependant, si le bloc Clojure produisait un tableau 2D, vous pourriez changer le résultat pour être value
et non raw
pour Org pour formater ce résultat sous forme de tableau, et vous l'obtiendriez comme un tableau 2D dans un bloc Python.