後で他のコードブロックによって使用される組織テーブルを生成するコードブロックで少し問題があります。例えば:
#+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
結果、2番目のコードブロックはdata
引数をデータテーブルではなく文字列として解釈し、簡単な方法でデータを抽出できなくなります。「手動で」ASCIIデータをPythonデータ構造に変換することはできますが、組織で処理することをお勧めします:-)最初のコードブロックの#+TBLNAME
代わりにを出力する方法はあり#+RESULTS
ますか?または、2番目のコードブロックで、引数を文字列ではなく組織テーブルとして強制できますか?
2
通常、Babelソースブロックがテーブルを生成することを意図している場合、2次元ベクトルが生成されます。Clojureコードが文字列を生成する代わりにそれを行った場合、コード内で何も変更する必要はありません。Clojureでベクターを作成する方法を探してみませんか?
—
wvxvw 2015
@wvxvwコメントありがとうございます。ここでは少し混乱しているようです。ポイントorgモード全体はプレーンテキストだと思いました。あなたが見たもの、それがあなたの手に入れたものだ。しかし、#+ RESULTSブロックの背後には、文字列またはネストされたデータ構造である、ある種のデータ構造があることを示唆しているようです。
—
Julien Chastang 2015
いいえ、それは私が言っていることではありません。私はそれ
—
wvxvw 2015
clojure.pprint/print-table
がOrgテーブルとしてフォーマットされた文字列を返すと私は信じており、ヘッダー引数をoutput
andに設定しているのでraw
、あなたはあなたが得るものを得ます。ただし、2回目に使用すると、Orgは結果のテーブルを読み取らず、代わりにClojureブロックを再評価して、その結果をPythonブロックにフィードします。ただし、Clojureブロックが2D配列を生成した場合、Orgがその結果をテーブルとしてフォーマットしvalue
ないように結果を変更し、raw
Pythonブロックで2D配列として取得できます。
@wvxvw org-babelヘッダー引数を理解してくれてありがとう。いくつかの実験の後、私はあなたの説明が実際にそうであるように見えるのを見ることができます、そして私はそれで走ることができるはずです。ただし、これらは文字列であり、Clojureのネストされたベクトルなどのデータ表現ではないため、特に中間形式として「リッチ」スタイルのorg-tablesを中間形式として使用できないようです。とにかく、私はorg-babelに非常に満足しており、Jupyterの優れた代替手段であると考えています(もちろん、emacsユーザーの場合:-))ご協力ありがとうございます。
—
Julien Chastang 2015