Estou com alguns problemas com blocos de código que produzem tabelas organizacionais para serem posteriormente consumidos por outros blocos de código. Por exemplo:
#+NAME: upper_air
#+BEGIN_SRC clojure :results output raw
(clojure.pprint/print-table table)
#+END_SRC
vai produzir
#+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 |
mas o que eu realmente gostaria é
#+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 |
(nota #+RESULTS
vs. #+TBLNAME
) para que, posteriormente, eu possa fazer algo como
#+BEGIN_SRC ipython :session :var data=upper_air
import numpy as np
arr = np.array(data)
p = arr[:,4]
#+END_SRC
Com o #+RESULTS
resultado, o segundo bloco de código interpretará o data
argumento como uma sequência em vez de uma tabela de dados e não poderei extrair os dados de maneira direta. Eu poderia converter os dados ASCII em uma estrutura de dados Python 'manualmente', mas eu preferiria a organização lidar comigo :-) Existe uma maneira de o primeiro bloco de código gerar um em #+TBLNAME
vez de #+RESULTS
? Como alternativa, o segundo bloco de código pode coagir o argumento como uma tabela organizacional em vez de uma sequência?
clojure.pprint/print-table
retorna uma string formatada como tabela Org e, desde que você defina o argumento do cabeçalho comooutput
eraw
, você obtém o que obtém. No entanto, quando você a usa pela segunda vez, a Org não lê a tabela resultante. Em vez disso, reavalia o bloco Clojure e alimenta seu resultado no bloco Python. No entanto, se o bloco Clojure produzisse uma matriz 2D, você poderia alterar o resultado para servalue
e nãoraw
para a Org formatar esse resultado como uma tabela e obtê-lo como uma matriz 2D no bloco Python.Respostas:
Você precisa que seu bloco de tabela retorne uma matriz (ou vetor ou lista, etc ...) como esta. Você pode obter linhas horizontais com Nenhum, ou nulo ou qualquer outro tipo equivalente no clojure.
fonte