• このエントリーをはてなブックマークに追加

スポンサードリンク

はじめに

org-mode と R を 組み合わせたら, 予想外に心地よかったので, メモメモ.

できること

テキスト + コード + グラフ が ひとつのファイルのなかにおさまるのだ.

  • org-mode で書いているテキストの中にコードを埋め込むことができる.
  • org-mode で書いているテキストの中にグラフを埋め込むことができる.
  • org-mode で書いているテキストの中のコードをその場で実行できる.

サンプル

  #+OPTIONS: toc:nil
  * Lab3
  ** 1. 
     Make a histogram to visualize the distribution of Earnings.
   
  #+name: earnings
  #+begin_src R :file earinings.png :width 600 :height 600 :results graphics :session ex :export both
  bull <- read.csv ("BullRiders.csv")
  earnings <- bull$Earnings
  hist (earnings)
  #+end_src
   
  #+RESULTS:
  [[file:earinings.png]]
   
  ** 2. 
     Generate the appropriate descriptive
     statistics for this distribution.
   
  #+name: earnings-median
  #+begin_src R :session ex :export both
  median (earnings)
  #+end_src
   
  #+RESULTS:
  : 111147.63
   
  #+name: earnings-mean
  #+begin_src R :session ex :export both
  max (earnings)
  #+end_src
   
  #+RESULTS:
  
: 1464475.61

2015-01-03-223259_759x783_scrot.png

設定

org-mode からコードを実行する

まずは, 以下の設定が必須

(org-babel-do-load-languages
 'org-babel-load-languages
 '((R . t)
   )
 )

begin_src のところで C-c C-c をたたいて 評価する.

評価するときにいちいち質問されないようにするために,以下を書く.

(setq org-confirm-babel-evaluate nil)

org-mode でファイルをひらくときに,inline-image があれば読み込み.

(add-hook 'org-babel-after-execute-hook 'org-display-inline-images)   
(add-hook 'org-mode-hook 'org-display-inline-images)

画像変換 : :file earinings.png :width 600 :height 600 :results graphics

グラフを生成するには, org-babel Header に以下をかく.

  :file earinings.png :width 600 :height 600 :results graphics

インタプリタ :session hogehoge

インタプリタをもつ言語では, :session hogehoge を記述することで, hogehoge バッファでセッションが開始する.

なにがうれしいかというと, 複数の code block の間で, 変数を共有することができるのだ.

さいごに

文芸的プログラミング, 普通のプログラミングにはつかいどころがないと 思っていた.絵空事だとおもってた.

R 言語のようにグラフをともなうものにこそ, そのコンセプトは光り輝くのだと思った.

Reproducible Research というバズワードも最近になって話題になった.

これを機会に,もってみんな Emacs と org-mode をつかうべし.