|
目次 Emacs から R を使う †ESS (Emacs Speaks Statistics) は Emacs や XEmacs から R などの統計解析アプリケーションを便利に使ってしまおう,という Lisp プログラムです.(スクリーンショット?) ESSがどれだけれ能率向上をもたらしてくれるものか、などは「The R Book」p.55--56に叙述されています。 News †最新版:5.11 update! (2010年7月14日) 変更点(5.10→5.11)
変更点(5.9→5.10)
変更点(5.8→5.9)
変更点(5.7.1→5.8)
変更点(5.7→5.7.1)
変更点(5.6→5.7)
変更点(5.4→5.6)
変更点(5.3.11→5.4)
変更点(5.3.10→5.3.11)
変更点(5.3.9→5.3.10)
変更点(5.3.8→5.3.9)
変更点(5.3.7→5.3.8)
変更点(5.3.6→5.3.7)
変更点(5.3.5→5.3.6)
変更点(5.3.4→5.3.5)
変更点(5.3.3→5.3.4)
変更点(5.3.2→5.3.3)
変更点(5.3.1→5.3.2)
変更点(5.3.0→5.3.1)
変更点(5.2.12→5.3.0)
変更点(5.2.11→5.2.12)
変更点(5.2.10→5.2.11)
変更点(5.2.9→5.2.10)
変更点(5.2.8→5.2.9)
変更点(5.2.7→5.2.8)
変更点(5.2.6→5.2.7)
変更点(5.2.5→5.2.6)
変更点(5.2.4→5.2.5)
変更点(5.2.3→5.2.4)
変更点(5.2.2→5.2.3)
変更点(5.2.1→5.2.2)
変更点 (5.2.0→5.2.1)
Windowsへインストール †簡単インストール †Emacs for Windows Modifiedの22.3-modified-5(2009年7月20日リリース)から、ESSが含まれるようになりました。含まれるESSのバージョンは5.4です。ESSのインストールに躓いているひとは試してみるとよいかも。 Q&A (初級者コース) より転載 西川? (2004-06-25 (金) 14:43:13) 日頃Windowsしか触っておらず、UNIXとは縁がない私のような人は、ESSのインストールからつまずくと思うので、以下のページを見てやってみてください。 http://www1.u-netsurf.ne.jp/~ysk-net/WithEmacs/page2_1_2.html とりあえず、meadowはインストールできます。XEmacsの海外サイトからダウンロードしようとしたがftpでつまづいて、3日もかけてしまいました。時間の無駄なので、同じことは皆さんしないでくださいね。
Linuxへのインストール †RPM系Linuxへのインストール †$ wget http://ess.r-project.org/downloads/ess/ess-5.3.0.tar.gz $ rpm -ta ess-5.3.0.tar.gz [中略] 書き込み完了: /home/ほげ/rpm/SRPMS/emacs-ess-5.3.0-1.tgm.src.rpm 書き込み完了: /home/ほげ/rpm/RPMS/noarch/emacs-ess-5.3.0-1.tgm.noarch.rpm [後略] とするとemacs-ess-5.3.0-1.tgm.noarch.rpmができあがります。このrpmをインストールすればOK。新規インストールの場合は、 # rpm -ivh /home/ほげ/rpm/RPMS/noarch/emacs-ess-5.3.0-1.tgm.noarch.rpm バージョンアップの場合は # rpm -Fvh /home/ほげ/rpm/RPMS/noarch/emacs-ess-5.3.0-1.tgm.noarch.rpm 「ほげ」は自分の環境に読み替えてください。 トラブルシューティング †バージョン5.2.9の依存関係は、rpm -qpRで調べても、emacsぐらいしかありませんが、BIULDする際にはtexi2dviを使っていました。上記はVineLinux3.1上で検証しましたが、FedraやTurboでは、ちょっと違うかも知れません。情報をお待ちしています。ビルドの際にトラブルに遭遇した方は、是非書き込んでください。ノウハウを蓄積しましょう。 Ubuntuへのインストール †Ubuntuではessがパッケージ化されているので、 sudo apt-get install ess これでインストールOK MacOSXへインストール †Carbon Emacs †Carbon Emacs パッケージには最初からessが同梱されています。別途インストールする必要はありません。 MacPorts? †MacPorts?には、essのportが用意されていないので、MacPorts?のemacs-appやemacs-app-develを使っている場合は、自分でインストールする必要があります(誰かessのProfileを描いてくれると嬉しい)。 Makeconfを下記のように編集して、make && sudo make installを行います。 EMACS = /Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs
PREFIX = /Applications/MacPorts/Emacs.app/Contents/Resources
EMACSDIR = ${PREFIX}
LISPDIR = ${EMACSDIR}/site-lisp/ess
DOCDIR = ${LISPDIR}/docs
HELPDIR = ${EMACSDIR}/site-lisp
INFODIR = ${PREFIX}/info
ETCDIR =$(PREFIX)/etc/ess
Makeconfの下の方でDOCDIRが定義されているのでコメントアウトすることを忘れずに。 essの中からグラフィックディバイスを呼び出すと、デフォルではX11()が使われます。quartzの方がよい人は、作図の前にquartz()としておくか、作業に入る前にoptions(device="quartz")とするか、.Rprofileに 然るべき設定をしておきましょう。 スクリーンショット †拡張子rとR-mode(ess-mode)を関係づけておいて、拡張子がrのファイルを読み込むとR-modeが起動して、R-modeのツールバーが出現します。「R」のアイコンを押下すると、Rがemacsの中で起動します(左下のウィンドウ)。右のウインドウはヘルプファイルを表示させたところです。 xemacsとess †ESS の設定 †MSWindowsユーザーはJohn Foxによる13頁のpdfファイルが役に立つと思います。http://socserv.socsci.mcmaster.ca/jfox/Books/Companion/ESS/ess-xemacs.pdf 色分けの追加 †設定ファイル(.emacs)などに以下を追加する。 (set-default-font "-adobe-courier-bold-r-normal--*-140-*-*-m-*-iso8859-1")
(global-font-lock-mode t) ; S/R TeX
(set-face-foreground 'font-lock-comment-face "Firebrick") ; #com %com
(set-face-foreground 'font-lock-string-face "SeaGreen") ; "str" "str"
(set-face-foreground 'font-lock-keyword-face "MediumBlue") ; if \end
(set-face-foreground 'font-lock-constant-face "VioletRed") ; fun<- {ctr}
(set-face-foreground 'font-lock-type-face "DarkGoldenrod") ; T,F ?
(set-face-foreground 'font-lock-variable-name-face "Blue") ; xv
(set-face-foreground 'font-lock-function-name-face "VioletRed") ; <- {eq1}
拡張子がrのファイルを読み込んだら自動的にR-modeになる設定 †(setq auto-mode-alist
(cons (cons "\\.r$" 'R-mode) auto-mode-alist))
(autoload 'R-mode "ess-site" "Emacs Speaks Statistics mode" t)
私は (require 'ess-site)でemacs起動時に読み込まれてしまうのが嫌いなので、autoloadを使っています。 何でも掲示板?の中間さんの記事より転載 (2004-04-11 (日) 18:09:50) †ヘルプで日本語が出ない。essでの日本語の扱いで旨く行かない話が過去に ありましたが、解決出来ました。 (set-language-environment "Japanese")
(set-default-coding-systems 'euc-japan-unix)
(set-terminal-coding-system 'euc-japan-unix)
(set-keyboard-coding-system 'euc-japan-unix)
(set-buffer-file-coding-system 'euc-japan-unix)
(require 'ess-site)
(define-key ess-mode-map "\177" 'delete-char)
(setq ess-ask-for-ess-directory nil)
(setq ess-pre-run-hook
'((lambda () (setq S-directory default-directory)
(setq default-process-coding-system '(euc-japan-unix . euc-japan-unix))
)))
setq ess-pre-run-hook に (setq default-process-coding-system '(euc-japan-unix . euc-japan-unix)) があれば幸せになれます。 Meadowの人も(setq default-process-coding-system '(shift_jis . shift_jis)) があれば幸せになれます。 大量のデータの表示 + font-lock(fontifying)で悩まされている方へ †(setq ess-pre-run-hook '(lambda () (setq font-lock-verbose nil) (require 'font-lock) (add-hook 'font-lock-mode-hook 'turn-on-lazy-lock) )) とすると、C-c C-c で速やかに表示を停止できるかもしれません。 設定例 †;; ESSの設定
(setq auto-mode-alist
(cons (cons "\\.r$" 'R-mode) auto-mode-alist))
(autoload 'R-mode "ess-site" "Emacs Speaks Statistics mode" t)
(setq load-path (cons (expand-file-name "/usr/share/emacs-21.3/site-lisp/ess") load-path))
(setq ess-pre-run-hook
'((lambda () (setq S-directory default-directory)
(setq default-process-coding-system '(euc-japan-unix . euc-japan-unix))
)))
(autoload 'R "ess-site" nil 'interactive)
(eval-after-load "R"
'(progn
(set-language-environment "Japanese")
(set-default-coding-systems 'euc-japan-unix)
(set-terminal-coding-system 'euc-japan-unix)
(set-keyboard-coding-system 'euc-japan-unix)
(set-buffer-file-coding-system 'euc-japan-unix)
; (define-key ess-mode-map "\177" 'delete-char)
(setq ess-ask-for-ess-directory nil)
))
本来はここまでする必要がなく単純に(require 'ess-site) だけでよい。 使用方法 †ESS には (i) R を Emacs から使う iESS モード,(ii) R スクリプト作成支援環境を提供する ESS[R] モード,(iii) R ヘルプから Example を実行したりできる help[R] モードがあります. iESS †
$ emacs -f R &
ESS モード (R モード) †
加筆をお願いします ソースの整形 †自動インデント整形機能のためコード入力時に自動的に整形されるが、ごにょごにょ編集して再整形の必要が生じたときには、下記のコマンドを使う。
式全体を整形したい場合は、カーソルをその式のコマンド名部分に持ってくる必要がある(ちょっと考えれば当たり前のことなんだけど)。1行のみの場合は、その行のどこにカーソルがあってTABキーを押下すれば、(その場にTABが挿入されるのではなく)正しく整形してくれる。 コメント行の整形では、「#」と「##」と「###」の動作が異なるので要注意。コメント文をインデントの位置に持ってきたい場合には、 ## メイン処理 というように「##」を使う。なお、「###」では行頭になる。 「#」も「###」も「##」と同様の動作にしたいときには、Emacs上で次の式を評価する(.emacs.elなどに書いておいても良い)。 (setq ess-fancy-comments nil) 次の式を評価すれば元の動作に戻る。 (setq ess-fancy-comments t) ESS-help †help(foo) で開いたヘルプのバッファにおいて,Example の各行に対して l で,コンソールバッファにコピーかつ評価される. チートシート †各モードのキーバインドをまとめた一覧表。下敷きとかにはさんで使ってください。 参考リンク †ツッコミ、ご要望もこちらから ESS(Emacs Speaks Statistics)のチートシート作った ESS 利用の流れ †例1:関数を書いてロードする †オブジェクト(関数など)記述 my.func <- function()
{
print( "hello" )
}
my.func() の定義文のどこか、または、末尾の } の後ろで, C-c M-f 初回はStarting Data Directroyの場所を尋ねられるが、そのままEnterを押下すると、Rが 自動的に起動し、my.func() の定義文は実行され、Rのスクリプトを編集してい るバッファが2つに分裂し、R実行環境である*R*バッファが現れ、その*R*バッファに カーソルが移動する、という一連の動作が行われる。 例2:編集中のRコードをとにかく実行する †とにかく編集中のRコードを実行するには、 C-c C-c とする。カーソルが置かれている文脈を自動判別して、パラグラフまたは関数を実行してくれる。パラグラフは、空行で区切られたRコードのかたまりである。もし、Rスクリプトに空行が1行もない場合は、全体が実行されてしまうので、適当に空行を入れる癖をつけた方がよい(と思う)。 例3:要らない部分をコメント化 †Rスクリプトの最大の利点の1つが、再実行・再現が簡単な点である。Rスクリプト全体を実行するときに不要になる 部分は、コメント化しておきたい。 コメント化したい部分を選択して M-x comment-region で選択部分がコメント化される。次にバッファ全体を実行するには下記のようにする。 C-c C-b コメント化した部分を元に戻すには、有効化したいRコードを選択して M-x uncomment-region とする。 便利な関数 †スクリプト作成中にヘルプを見る †ESS[R] モードで関数やスクリプトを書いているときに「あの関数のヘルプを見たい」場合は M-x ess-help 関数名 でヘルプバッファが開きます.関数名の補完もしてくれます. Emacs を利用しているものとは異なる計算機でスクリプトを実行する †Rの起動オプションを渡したい場合 †例えば、--vanillaをつけてRを起動したい場合は、設定ファイルに (setq inferior-R-args "--vanilla") と書く。 ess-rdired.elとは †ess-rdired.elとは、emacs上でRを使う際に、Rのオブジェクトの一覧表示、プロット、内容表示など便利な機能を提供してくれるLispプログラムである。ess-rdired.elはStephen Eglen氏により開発・提供されている。ESSと一緒に使う。なお、ess 5.2.0以降はessに標準で組み込まれている。 キー割り当て †主なキー割り当て
その他のキー割り当て
操作の例 †最初に、M-x RでESSを起動し、例えば下記のようなコマンドを実行する x <- rnorm(20) y <- sin(seq(from=0, to=8*pi, length=100)) z <- as.data.frame(matrix(rnorm(100), 25, 5)) xyz <- list(x, y, z) 次に、M-x ess-rdiredでess-rdiredを起動する。*R dired*という分割ウィンドウが開く。ここで、オブジェクト名の上で、上述のキーを押下すると、それぞれコマンドが実行される。 R diredに表示されているzの上にカーソルを移動させ、vを押下したところ。*R view*にデータフレームzの内容が表示されている。 [#z8419985] auto-complete-acr.elとは †テキスト入力中に補完候補を自動的に表示してくれる auto-complete.elをessでも使えるように拡張したもの。本体のソースコードや補完候補を生成するpythonスクリプトはこちら auto-complete.elはこちらから落とせる。 どのように使えるのかは、こちらのデモをみるとよくわかる。 使い方 †ロードパスが通ったディレクトリにauto-complete-acr.elとauto-complete.elを置いて、.emacsに以下の内容を追加。 (require 'auto-complete) (global-auto-complete-mode t) (require 'auto-complete-acr) 後はessモードを起動した後、M-x auto-complete-modeをすれば、自動的に補完候補が出てきます。 応用的使い方 †提供されているauto-complete-acr.elにすべてのパッケージの補完候補は入っていません。独自にインストールしたパッケージの補完候補を出したい場合は、補完ライブラリを自作する必要があります。 その場合、このpythonスクリプトを使うと自動的に生成するので、それをauto-complete-acr.elの関数リストと差し替えることでオリジナルのauto-complete-acr.elを作ることができます。 参考リンク †auto-complete.elを拡張するR用のelisp書いた auto-complete.elを拡張するR用のelispをさらに拡張してみた。 ess-R-object-tooltip.elとは †Rオブジェクトの上にマウスカーソルを載せると、str()やsummary()の内容をツールチップで表示する。 リンク †
EmacsSpeaksStatisticsFAQ 日本語訳 †ESSGeneralFAQ †ESS の歴史を教えて下さい. †Emacs Speaks Statistics は S-PLUS のプログラミングに対応した Emacs のモード,S-mode から始まりました. ESS/S-mode/SAS-mode は誰が初めに作ったものですか.また,その後誰が contribute したのでしょうか.(Who started ESS/S-mode/SAS-mode, and who contributed in the past?) †S-mode: Frank Ritter, Doug Bates, Ed Kademan, David Smith, Martin Maechler, TonyRossini? SAS mode: John Sall, Tom Cook, TonyRossini? R-mode: Martin Maechler, TonyRossini?, Kurt Hornik. Stata-mode: Thomas Lumley, Tony Rossini, Bill ...(?I need to relook this up?)... ESS : TonyRossini?, Martin Maechler, Kurt Hornik, Rich Heiberger, Rodney Sparapani, Stephen Eglen. ESSUsageFAQ †ESSInstallationFAQ †ESSCustomizationFAQ †コメント †
|