Gnupack の Emacs に ESS

ESS は Emacs Speaks Statistics の略である。つまり、Rなどの統計環境をEmacsから操作することが可能になる。
現在、RStudio という非常に良くできたRの統合開発環境があるので、初心者はそちらのほういいかもしれないが、Emacsのキーバインド使い続けたいひとは、是非導入すればよい。

すでにRが導入されているとする。ヴァージョン3.0.1で64ビット版のバイナリをインストールしているとする。

Gnupack をルートに導入しているのなら、C:\gnupack_basic-11.00のconfig.iniに

PATH = %PATH%;C:/Program Files (x86)/Aspell/bin

これでGnupackのEmacsから実行できるようになる。ただCygwin上で実施する際には単に「R」でなく、

R --vanilla

とする必要がある。

ELPAにあるの「list-packages」で「ESS」を選んで導入する。「~/.emacs.s/init.el」には次を記入しておく。

(setq inferior-R-args "--vanilla")
(require 'ess-site)

終了時に、コマンドから「q()」と打つだけエラーメッセージがでる。本質的な影響はないと考えられるが、気持ちが悪いのなら、「C-c C-q」で終わるようにする。

ESSの使い方は、本家のドキュメンテーション
http://ess.r-project.org/index.php?Section=documentation&subSection=manuals
を読むか、日本語なら
http://www.okada.jp.org/RWiki/?ESS
http://d.hatena.ne.jp/a_bicky/20120415/1334490586
http://d.hatena.ne.jp/a_bicky/20120422/1335086814
などを読む。ところどころ古い記事がある。

また、ELPAで「autocomplete.el」を導入済みなら、Rstudioと同様に単語補完が可能になる。さらにstr()やsummary()の内容をポップアップするためには、ELPAから 「ess-R-object-popup.el」 を導入して、「~/.emacs.s/init.el」に

(require 'ess-R-object-popup)
(define-key ess-mode-map "\C-c\C-g" 'ess-R-object-popup)

を書き加える。また、Rstudioとおなじようなオブジェクトをみるのには、内蔵のRdiredだけでなく、「ess-R-data-view.el」も使える。後者はELPAから導入すればよい。
特にinit.elに付け加えることはないが、使い方は
http://sheephead.homelinux.org/2013/05/10/7019/
を参考にすればよい。

すでに「auctex」を導入済みなら、

;; Linking ESS with AucTex
(add-hook 'Rnw-mode-hook
(lambda ()
(add-to-list 'TeX-command-list
'("Sweave" "R CMD Sweave %s --encoding=UTF-8"
TeX-run-command nil t :help "Run Sweave") t)
(setq TeX-command-default "Sweave")))

を「~/.emacs.s/init.el」に付け加えておく。

なおRstudioはSweaveが内蔵のpdflatexを使うため、日本語に対応していない。もしかしたら「Xelatex」でやる方法があるのかもしれないが、私はしらない。EmacsのESSとAuctexを併用して使えば、日本語でのSweaveが可能になる。やり方はまた別の機会に紹介する。

Gnupack の Emacs に ESS」への4件のコメント

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中