Ich habe ein paar Probleme mit Codeblöcken, die Organisationstabellen erzeugen, die später von anderen Codeblöcken verwendet werden. Beispielsweise:
#+NAME: upper_air
#+BEGIN_SRC clojure :results output raw
(clojure.pprint/print-table table)
#+END_SRC
wird herstellen
#+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 |
aber was ich wirklich gerne hätte ist
#+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 |
(Anmerkung #+RESULTS
vs. #+TBLNAME
) damit ich später so etwas machen kann
#+BEGIN_SRC ipython :session :var data=upper_air
import numpy as np
arr = np.array(data)
p = arr[:,4]
#+END_SRC
Mit dem #+RESULTS
Ergebnis interpretiert der zweite Codeblock das data
Argument als Zeichenfolge anstelle einer Datentabelle, und ich kann die Daten nicht auf einfache Weise extrahieren. Ich könnte die ASCII-Daten 'manuell' in eine Python-Datenstruktur konvertieren, aber ich würde es vorziehen, wenn org sie für mich handhabt :-) Gibt es eine Möglichkeit, dass einer der ersten Codeblöcke a #+TBLNAME
anstelle von ausgibt #+RESULTS
? Kann der zweite Codeblock das Argument alternativ als org-Tabelle anstelle einer Zeichenfolge erzwingen?
clojure.pprint/print-table
gibt eine Zeichenfolge zurück, die als Org-Tabelle formatiert ist, und da Sie das Header-Argument auf output
und setzen raw
, erhalten Sie, was Sie erhalten. Wenn Sie es jedoch zum zweiten Mal verwenden, liest Org die resultierende Tabelle nicht, sondern wertet den Clojure-Block neu aus und gibt das Ergebnis an den Python-Block weiter. Wenn jedoch der Clojure Block eine 2D - Array erzeugt, könnten Sie das Ergebnis ändern zu sein value
und nicht raw
für Org zu Format , das Ergebnis als Tabelle, und Sie würden es als ein 2D - Array in Python Block erhalten.