目次



Emacs から R を使う

ESS (Emacs Speaks Statistics) は Emacs や XEmacs から R などの統計解析アプリケーションを便利に使ってしまおう,という Lisp プログラムです.(スクリーンショット?

ESSがどれだけれ能率向上をもたらしてくれるものか、などは「The R Book」p.55--56に叙述されています。

News

最新版:16.04 update! (2016年5月8日)

変更点(15.09→16.04)

  • 開発者用の機能を書き直した。特にパッケージ開発に便利なess-r-set-evaluation-env (C-c C-t C-s)を新たに加えた
  • ess-r-package-modeが新しく追加された
  • ヘルプ検索が改善された
  • magrittrパッケージのパイプのために新しいブレイクポイントを追加
  • ESSと内部プロセスの間で簡単な通信が出来るようにした
  • Roxygenでバッククオートがついたブロックを正しく整形するようにした
  • magrittrパッケージのデバッグパイプをスキップするようにした

変更点(15.03→15.09)

  • インデント機能を書き直した。3種類に大別されるインデント関数を提供する
  • 旧インデント機能の廃止
  • test用フレームワークを加えた
  • RStudioユーザ向けにRStudio風のインデントを再現できるようにした
  • Roxygenのフィールドをパラグラフ整形しても見やすいようにした
  • ESSがあなたのRコードを整形できるようになった!
  • 内部バッファで文字表示位置の決定にときたま失敗するのを修正した
  • パッケージ開発をESSで行うとき、パッケージの名前空間を正しく付置できるようになった
  • iESSで内部プロセスに名前をつけて区別できるようになった

変更点(14.09→15.03)

  • company-modeを全面的にネイティブ対応した
  • R補完を強化した
  • ess-close-paren-offset変数を新規追加
  • CRANミラーの確認はEmacs起動中に1度だけにした
  • libraryやrequire使用時の補完を強化
  • バッファ画面をカスタマイズ可能にした(ess-show-buffer-action)
  • yes-or-no-pの代わりにy-or-n-p全面的にを使うようにした
  • UNIXとGNUに対するMakefileの親和性を高めた
  • ess-developerで簡単なディレクトリ内検索機能を追加
  • 閉括弧のインデントに一貫性を持たせた
  • 波括弧開始時のインデントに関する不具合を修正
  • gitバージョン検索の不具合を修正
  • R dialectにおいてディレクトリの変更時間を見ないようにした
  • edebugのために全てのessマクロを宣言した
  • eldocメッセージ関数にess-smart-comma変数を追加した
  • RDAエイリアス変更をユーザに通知するようにした
  • '~'で終わる行を継続行と解釈するようにした
  • roxyパラグラフ機能を期待通りに動くようにした
  • ess-developer-add-packageにおいて、ess-get-words-from-vectorから不正な引数waitを削除した
  • マスクされていてもbase::q()を呼ぶようにess-quit-rを変更した
  • 他のウインドウにおいても、ess-show-bufferで常にバッファが表示されるようにした
  • ディレクトリ名に空白が含まれていてもディレクトリ移動できるようにMakefileを修正した
  • ess-kill-bugger-and-toでRを再起動させないように変更した

変更点(13.09-1→14.09)

  • gdbデバッガが期待通りに動くようにした
  • iESSバッファをcomit-mode由来にした
  • ess-execute-screen-optionsが正しいスクリーン幅を使うようにした
  • TAGSファイル名を与えないときでも、ess-build-tags-for-directoryが動作するようにした
  • if文以外ならどこでもess-continued-statement-offsetが有効になるようにした
  • 複数行構文の1行目をインデントするために、新変数ess-first-continued-statement-offsetを追加
  • 行頭がカンマときインデントを無効にした
  • roxygenにおいてRETの振る舞いを改善した
  • yank中の不要な文字列を削除してコマンドのみを残すC-u C-u C-yが"+"を含む行で止まっていたのを修正した
  • "empty watch window bug"を修正
  • ac-quick-helpで位置を尋ねないようにした
  • roxygenコマンドリストにimportClassesFrom?とimportMethodsFrom?を追加
  • 13.09-1で生じたvignetteの表示とハーパーリンクの不具合を修正した

変更点(13.09→13.09-1)

  • ess-remoteとTRAMPを使う際に、R用コードをローカルの用意するのではなく、リモートからダウンロードするようにした
  • TRAMPのPAGER環境変数をinferior-ess-pagerにした
  • headとtail関数をess-R-describe-object-at-point-commandsのhtsummary関数に置き換えた
  • prettify-symbols-modeを追加
  • knitrがアクティブなフレームを評価できるようにした
  • ess-roxy-preview-HTMLをC-c C-o C-wで、ess-roxy-preview-textをC-c C-o C-tで実行できるようにした
  • make installによるESSのインストールを簡略化し、ほとんどの*nixシステムで動作するようにした
  • font-lockの処理がとても重くなる13.09からのバクを修正した

変更点(13.05→13.09)

  • 閉じ括弧が存在しない場合にfont-lockが次のプロンプトにまで影響を及ぼしていたが、これを防ぐようにした
  • M-x ess-versionを改良した
  • font-lock-warning-faceが期待通りに機能するようにした
  • 新しいhelpバッファを作成するとき、既存のess-helpバッファがあればそれを再利用するようにした
  • ?fooで複数候補がある場合にID0メニューが表示されるようにした(従来はC-c C-vの時のみ機能した)
  • 遅いネットワーク環境で遠隔処理がより速くなるようにした
  • tracebugするときにRソースコード参照で使われる正規表現を言語にほぼ依存しないようにした
  • ess-function-call-faceは、font-lock-builtin-faceではなくfont-lock-function-name-faceを継承するようにした
  • ess-inject-sourceにfunction-and-bufferオプションを追加した
  • ess-rep-regexpが無限ループにならないようにした。これに伴い、M-x ess-fix-miscellaneousも同様。

変更点(12.09-2→13.05)

  • 再描画を抑えることにより出力表示を4-10倍高速化(ess-tracebugを有効にしているときに限る)
  • C-cをess-show-tracebackに、C-c ~をess-show-call-stackにバインド
  • ユーザのグローバル変数や誤操作による影響を避けるため、関数をESSR環境変数の中に待避
  • 新変数ess-swv-processing-commandを追加
  • ess-default-styleをDEFAULTからRRRに変更
  • ess-use-tracebugをデフォルトで有効化
  • Eldocを改良

変更点(12.09→12.09-2)

  • C-c C-zがバッファ終端に切り替わるようにする新変数ess-switch-to-end-of-proc-bufferを追加。デフォルトはt。
  • ess-eval-visiblyをtとしたときにハングするess-eval-linewiseのバグを修正
  • ウインドウのプロンプトが中心に寄せられるess-eval-linewiseのバグを修正
  • *new*を選択すると落ちるess-switch-processのバグを修正
  • R-diredでess-local-process-name変数が空になるバグを修正
  • ess-swv-pdflatex-commands変数が1つのコマンドだけなら、ess-swv-PDFによる問い合わせをしないように変更
  • Weavers (sweaveまたはknitr)の対話的選択に対応する共通の引数などess-swv-weave変数に加えるようにした。
  • ess-eval-*-and-step関数によるジャンプは、最終行のときに足止めされるのではく、EOBの次の空行へ移動するようにした。

変更点(12.09→12.09-1)

  • キーマップの追加・変更
    C-c C-dess-doc-map
    C-c C-eess-extra-map
    C-c C-e C-dess-dump-object-into-edit-buffer
    廃止ess-handy-commands
    C-c C-tess-dev-map
    C-c C-yは廃止。代わりにC-c C-z C-zを使う
  • 新コマンドess-describe-object-at-point (C-c C-d C-e)を追加。C-eまたはeで表示内容を切り替える。一巡すると元に戻る←適当なオブジェクトの上にカーソルを持ってきて試してみて。とても便利!
  • 新コマンドess-build-tags-for-directory (C-c C-e C-t)を追加。
  • ess-switch-processの*new*を選ぶと複数のRプロセスが開始される。開始されたRプロセスのバッファはM-x rename-bufferで名前を変更できる。
  • ess-gen-proc-buffer-name-functionで、プロセスバッファが自動的に名前を付けられる挙動を定義できる。
  • ess-eval-visibly-pを廃止。代わりにess-eval-visiblyを使う。
  • nil値やt値の他にnowait値を追加。ess-eval-visiblyに適用できる。
  • Processメニューを追加
  • エラーのときiESSバッファが自動的に表示されるようにした。
  • 新コマンドess-switch-to-inferior-or-script-buffer (C-c C-z)は、スクリプトバッファとプロセスバッファを相互に切り替える。
  • C-c C-vで複数頁のヘルプを表示するときの解像度を尋ねるようにした。
  • 新コマンドess-display-demos (C-c C-d oまたはC-c C-d C-o)を追加。
  • 新コマンドess-help-web-search (C-c C-d wまたはC-c C-d C-w)を追加。
  • ess-pdf-viewer-prefがコマンド引数を受け付けるようにした
  • Rnwでknitrのサポートを追加。ess-swv-processor変数でデフォルトのプロセッサを指定できる。
  • noweb-*をess-noweb-*に変更
  • 新コマンドess-eval-chunk-and-step (M-n C-c)とess-eval-chunk (M-n C-M-x)を追加。
  • 新変数ess-ac-R-argument-suffixを追加し、=のあとに自動補完する。デフォルト値は" = "。
  • ess-help modeにC-cやC-M-xなど実行コマンドを追加。
  • 同名の複数のヘルプ頁がC-c C-vで正しく扱えるようにした
  • リモート操作でEmacsが固まらないようにした
  • comint-previous-prompt (C-c C-p)は第2プロンプト(+)で機能しないようにした
  • options("editor")をgnuclientからemacsclientに変更(Windowsのみ)。Emacsの初期ファイルに(server-start)が必要。
  • R12.09でRとRnwが連携でないバクを修正
  • マッチしないダブルクオテーションがあるときのアンダースコアによる補完機能のバグを修正

変更点(12.04-3→12.09)

  • ESSに必要な機能がないためXEmacs対応をやめる
  • Windows版でRterm.exeの位置を指定するカスタム変数を追加
  • noweb-modeはess-noweb-modeに、noweb-font-lock-modeはess-noweb-font-lock-modeに名称を変更
  • ess-nowebにおけるフォント表示のバグを修正
  • 新しいキーバインド
    C-M-xess-eval-region-or-function-or-paragraph
    C-c C-cess-eval-region-or-function-or-paragraph-and-step
    C-RETess-eval-region-or-line-and-step
    選択範囲がアクティブな場合は選択範囲が優先される
  • C-M-aとC-M-eは関数が見つからなかったときパラグラフの先頭または最後に移動するようにした
  • ess-eval-*-and-stepを改善し、バッファの最後やコードチャンクの最後に飛ばないようにした
  • ess-handy-commandsをC-c hに割り当て
  • 選択範囲を点滅させるようにした。点滅をやめる場合はess-blink-regionをnilにする。ess-blink-delayは点滅時間を与える
  • ヘルプバッファでapropos()をaに割り当て
  • ess-R-font-lock-keywordsやinferior-R-font-lock-keywordsでfont-lockをカスタマイズ可能にした
  • auto-completeを最初からアクティブにした。非アクティブにするにはess-use-auto-completeにnilを与える
  • ESSとiESSのメニューを一新
  • その他多数

変更点(12.04-1→12.04-3)

  • &や|の継続行におけるインデントを修正
  • iESSのプロンプトを改善
  • cl.elの名前衝突を解決
  • 利用しなくなったassocパッケージへの依存性を削除

変更点(12.04→12.04-1)

  • ess-tracebugを改善
  • ess-eldocを修正
  • ブロックではないif/else/for/while行のインデントを修正
  • M-x ess-versionを改善
  • ファイル名補完を文字列中でも動作するように戻した

変更点(12.03→12.04)

  • 12.03で変更したTABの挙動を元に戻す(補完しない状態をデフォルトにする)
  • 補完をM-TAB (M-C-i)にEmacs23とEmacs24の両方で割り当てた
  • 前行のインデント幅からオフセットを計算するess-arg-function-offset-new-line変数を導入

変更点(5.14→12.03)

  • ess-arg-function-offset-new-line変数を新しく実装
  • "C-c ."をインデントに割り当て
  • ESSバッファでプロンプトを除いたコマンド部分のみをペースト可能にした
  • Eldocをデフォルトで使えるようにして、総称的関数の引数を表示するようにした
  • TABキーによるインデントまたは補完を文脈に応じて判断するようにした
  • Emacs24に完全対応
  • Auto Completionモード用に`ac-source-R-args', `ac-source-R-objects', `ac-source-R'を用意した
  • 引数補完システムを新装した(Eldocとauto-completionの合わせ技)

その他、多数の変更点、新規実装あり。

変更点(5.13→5.14)

  • AUCTeXユーザのために、ess-swv-plug-into-AUCTeX-p変数が新しく追加された。
  • C-c C-cにバインドされているess-eval-function-or-paragraph-and-stepはコメントをスキップするようになった。このため、コメント文の中にfunction()があっても誤判定されることはなくなった。

変更点(5.12→5.13)

  • Windowsにおいて、R 2.12.0以降のRterm実行形式ファイルを、2.12.0以前のバージョンのRと同様に見つけることができるようにした
  • Rのバージョンが正しく表示されないことがあったのを修正
  • Windows以外のプラットフォームで、use-dialog-box変数の一時的変更を取りやめた
  • Roxygenサポートをさらに強化
  • Rd-preview-helpは、ヘルプバッファと同様のナビゲーション機能を持つプレビューバッファを作成するようにした
  • C-c [up] / [down] で、カーソル位置からバッファの先頭まで、またはカーソル位置からバッファの終端までを評価するようにした

変更点(5.11→5.12)

  • Roxygenサポートを強化
  • Rdモードに、\subsectionなど新しいキーワードを追加
  • 項目リストをキャッシュすることにより`ess-display-help-on-object' (`C-c C-v')を高速化

変更点(5.10→5.11)

  • TABでファイル名を補完するとき、ディレクトリ名やファイル名を後方補完するだけにとどめ、絶対パスに展開するのをやめた。
  • SweaveのバッファにおいてM-n Pで無条件にpdflatexを走らせるのをやめて、コマンドを入力するプロンプトを出すようにした。デフォルト以外のコマンド名の補完候補は、ess-swv-pdflatex-commandsに設定しておく。
  • Rのバッファにおいて、ess-use-this-dirをM-RETに割り当てた。ess-use-this-dirはソースファイルが置かれたディレクトリをsetwd()の引数としてRに与える関数である。

変更点(5.9→5.10)

  • Xemacsの互換性問題に対処
  • ESS-Sweaveにて空白文字を含むファイル名に対応

変更点(5.8→5.9)

  • インデント化処理をオリジナルな形に改変しやすくした
  • ess-display-help-on-object (C-c C-v)でオブジェクト名だけではなくヘルプファイルの別名も候補として表示するようにした
  • ESS-FONT-LOCK-MODEの値がnilになっていない限り、例えwindow-systemの値がnilであったとしても、font lockがonにされるようにデフォルトが変更された
  • ess-eval-deactivate-markのデフォルト値がtに変更された
  • Rscriptやlittlerのために#!をサポートした
  • 64-bit Windowsでも32-bitと64-bitの両方の全てのバージョンのRを見つけるようにした
  • ESSマニュアルの体裁を変更した
  • XEmacsのRoxygenではfont lockがoffになるようにした
  • ESSメニューにRoxygenのサブメニューを追加した
  • ess-rutils.elの中のess-rutils-hemldocs関数は、help.start()の代わりとしてEmacsのbrowse-url機能を使ってR文書に到達できるようにした

変更点(5.7.1→5.8)

  • パッケージの一覧表示、読み込み、インストール、アップデートを行い、オブジェクトの一覧表示、内容表示、削除機能もあるess-rutils.elを新規追加
  • Roxygenのインターフェイスがさらに拡張され、ess-roxy.elという名前で追加
  • elファイルのファイル名を改善

変更点(5.7→5.7.1)

  • 5.7のバグ修正が実は反映されていなかったので、これを反映

変更点(5.6→5.7)

  • Windowsでも他のOSのように、C-c C-lでソースファイル読み込めるようになった

変更点(5.4→5.6)

  • Rのhelp()の仕様が変わったので、それに対応

変更点(5.3.11→5.4)

  • 関数の引数を表示する(ess-r-args-show)が新関数(tooltip-show-at-point)を使うようになった
  • Emacs 23でツールバーが表示されるようになった

変更点(5.3.10→5.3.11)

  • Rd-modeのキーワードにRdversionを追加
  • Emacs 21.xで再び使えるようになった

変更点(5.3.9→5.3.10)

  • 5.3.9で入ったnoweb-modeのバグを修正(Enterを押下するとファイル先頭にジャンプしてしまう不具合とか)
  • noweb-modeで<を入力するとチャンク終了の@も自動挿入するようにした

変更点(5.3.8→5.3.9)

  • Roxygenのサポート追加
  • *R*やtranscript modesでキーワード強調をしなくなった

変更点(5.3.7→5.3.8)

  • Rコードを実行する際にRが起動していなければ自動的に起動するようにした

変更点(5.3.6→5.3.7)

  • ess-default-styleをカスタマイズ可能にした
  • ess-font-lock-modeを追加
  • Windows版XEmacsをサポート
  • Emacs22をemacs -nwで使用しているときでもRnwが使えるようになった
  • RでサポートされたTAB補完をESSでもサポート
  • Windows版Rguiに直接Rコードを送る機能の実験的追加

変更点(5.3.5→5.3.6)

  • M-x R-newestの機能を強化

変更点(5.3.4→5.3.5)

  • M-x R-newestを追加。複数のバージョンのRから最新のものを起動。
  • Sven HartensteinのR関数引数ヒントを利用可能にした
  • ess-get-pdf-viewerやess-get-ps-viewerがカスタマイズ可能になった
  • pdflatexが正常に終了したときのみpdfビューアが起動するようにess-swv-PDFを改良した
  • Rが起動していなければ自動起動するようにess-swv-weaveを改良した

変更点(5.3.3→5.3.4)

  • WindowsでCHMファイルをデフォルトのヘルプにした

変更点(5.3.2→5.3.3)

  • 5.3.2のバグ(ヘルプバッファに無用のプロンプトを表示し、C-c C-lを阻害していた)を修正。5.3.2を使用している人は5.3.3へのアップグレードを強く推奨
  • 新しいカスタマイズ用の変数 ess-display-buffer-reuse-frames を追加

変更点(5.3.1→5.3.2)

  • Sweave-make関数を改良

変更点(5.3.0→5.3.1)

  • XEmacsがRterm.exeを見つけられないバグを修正
  • RSiteSearch?()と同等のM-x R-site-searchを追加(少々実験的)。ブラウザはbrowse-url-browser-functionで指定するとよい。

変更点(5.2.12→5.3.0)

  • ess-toggle-S-assign-keyで<-を出力するキーバインドが任意に設定できるようになった。(以前は、アンダーバーに固定)
  • ess-use-inferior-program-name-in-buffer-nameが追加され、実行プログラム名をR以外に設定できるようになった
  • ess-eval-paragraph-and-stepが追加され、パラグラフをRで評価できるようになった。C-c C-pに割り当て。
  • ess-eval-function-or-paragraph-and-stepが追加され、関数をRで評価できるようになった。C-c C-cに割り当て。

変更点(5.2.11→5.2.12)

  • Cygwin (WindowsでUNIX環境を実現する環境) + RtermでもESSが動作するようにした
  • デフォルトでは戻り値がNULLになっているbaseenv()を必要に応じて設定するようにした
  • ESSをインストールする新しい仕組みを試験的にサポートした(lisp/ess-install.elを参照)

変更点(5.2.10→5.2.11)

  • infoとdirをemacsユーザに使いやすくした

変更点(5.2.9→5.2.10)

  • ess-r-versionsをカスタマイズできなくした
  • UNIX系OSへのインストール支援の強化
  • ファイル名補完がXemacsでも使えるようになった

変更点(5.2.8→5.2.9)

  • Windows版:ess-load-fileにおけるディレクトリ文字?のバグが取り除かれた。
  • R関数の先頭にジャンプするM-C-aや(`ess-beginning-of-function')、その他のESSコマンドで認識されるR関数パターンが強化され、S4メソッド定義を含む多くのケースで有効になった。
  • myOwnhelp(1)がhelp(1)を誤って起動させないようにした
  • 無効なhelpバッファの判定を向上させた。例えばcontourのように"no documentation"という字句を含むが有効なhelpバッファを有効扱いにするようにした。
  • options("help.try.all.packages" = TRUE)の場合は、?rlmで、rlmを定義する全てのhelpの一覧を作成するようにした。その際に、helpバッファは、新たに*help[R](rlm in packages)*という名前に変更される。

変更点(5.2.7→5.2.8)

  • iESSバッファにおけるファイル名補完が[TAB]でできるようになった

変更点(5.2.6→5.2.7)

  • UTF-8サポートの副作用で、XEmacsの*.Rバッファにおいて予期せぬ自動改行が発生したのを修正
  • R 2.1.0で正しく動作するように調整した(5.2.6以前では正しく動作しません)

変更点(5.2.5→5.2.6)

  • UTF-8に対応
  • bell, beep, ding, alarmをサポート

変更点(5.2.4→5.2.5)

  • C-c C-q (Quit S)が正常に機能するようにした

変更点(5.2.3→5.2.4)

  • 常にオブジェクトの名前補完をできるようにした
  • Windows上でiESSバッファのオブジェクト名補完が極端に遅かったのを修正した
  • "."で始まるオブジェクト名を使えるようになった

変更点(5.2.2→5.2.3)

  • 新しくESSの内部プロセスが作成されてときはカレントバッファと差し替えるようにした
  • Rの起動オプションを渡せるようにした

変更点(5.2.1→5.2.2)

  • 異なるバージョンの複数のRに対応して呼び出し名(例えばR-1.8.1など)を作成するようにした
  • 異なるバージョンのRはそれぞれメニューバーに追加されるようにした

変更点 (5.2.0→5.2.1)

  • 異なるバージョンの複数の R をインストールしていても、使い分けられるようにした
  • アイコン付きのツールバーをつけた

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に 然るべき設定をしておきましょう。


スクリーンショット

ess-emacs-toolbar.jpg

拡張子rとR-mode(ess-mode)を関係づけておいて、拡張子がrのファイルを読み込むとR-modeが起動して、R-modeのツールバーが出現します。「R」のアイコンを押下すると、Rがemacsの中で起動します(左下のウィンドウ)。右のウインドウはヘルプファイルを表示させたところです。
【環境】
VineLinux 3.0beta
emacs 21.3-0vl5
ess 5.2.1-0vl2
R-1.9.1-0.fdr.1
(蛇足) atokxをIIIMECFではなくXIMで使っている軟弱者です。

xemacsとess

essonxemacs.jpg

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}

color-theme.elでもessが導入されていれば自動的に色分けがなされます。

拡張子が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を使っています。 Rファイルの先頭行に

#!/usr/bin/Rscript --vanilla --default-packages=utils
# -*- Mode: R; -*-

と記述しておけば、上記の設定がなくても自動的にRモードになります。(最初の一行目はRをスクリプトとして使うときの記述です。e.g. sh foo.r )

何でも掲示板?の中間さんの記事より転載 (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) だけでよい。

もし、(小中大)括弧を自動的に閉じる設定がしたいならば、

(defun remap-pair-keys (map)
  (define-key map (kbd "(") 'insert-pair)
  (define-key map (kbd "\"") 'insert-pair)
  (define-key map (kbd "[") 'insert-pair)
  (define-key map (kbd "{") 'insert-pair))
(defun remap-lisp-keys (map)
  (remap-pair-keys map)
  (define-key map (kbd ")") 'move-past-close-and-reindent)
  (define-key map (kbd "M-(") '(lambda()(interactive)(insert "(")))
  (define-key map (kbd "M-)") '(lambda()(interactive)(insert ")"))))
(defun remap-others-keys (map)
  (remap-pair-keys map)
  (define-key map (kbd "'") 'insert-pair))

(add-hook 'ess-mode-hook 
          '(lambda()(remap-other-keys ess-mode-map)))
(add-hook 'inferior-ess-mode-hook
          '(lambda()(remap-other-keys inferior-ess-mode-map)))

と書き加えておけばいい。これで(), [], {}, "",''が自動的に挿入されその真ん中にカーソルが移動するようになります。essやinferior-essモードに限らず他のところにも同じように応用が可能です。


使用方法

ESS には (i) R を Emacs から使う iESS モード,(ii) R スクリプト作成支援環境を提供する ESS[R] モード,(iii) R ヘルプから Example を実行したりできる help[R] モードがあります.

iESS

R 起動 (M-x R)
複数の R を起動することが可能.
R 終了 (C-c C-q)
関連するバッファも全て消してくれる
describe-bindings (M-x describe-bindings)
キーマップ(キーボードショートカット)を表示する(これを見て必要なものを覚えてください。essやinferior-ess-modeそれ以外でも同じようにすればいいです。)
最初からESSモードでemacsを起動する方法
コマンドラインから
$ emacs -f R &
コマンド履歴 (M-p, M-n)
コマンド履歴の検索 (M-r, M-s)
ヘルプ参照 (C-c C-v)
オブジェクト一覧 (C-c C-x)

ESS モード (R モード)

Emacsの基本編集機能一文字右に移動(C-f)
一文字左に移動(C-b)
一行上に移動(C-p)
一行下に移動(C-n)
行頭へジャンプ(C-a)
行末へジャンプ(C-e)
バッファの先頭にジャンプ(M-<)
バッファの末尾にジャンプ(M->)
指定行にジャンプ(M-x goto-line)
カーソル位置を削除(C-d)
カーソルの前を削除(C-h)
カーソル位置から行末までカット(C-k)
Emacsのウィンドウ・バッファ関連ウィンドウのバッファを切替える(C-b)
ウィンドウを消去する(C-x 0)
バッファを消去する(C-k)
ウィンドウを移動(C-x o)
ウィンドウを上下に分割(C-x 2)
ウィンドウを左右に分割(C-x 3)
ESS Evalバッファ全体を実行(C-c C-b)
選択されている範囲(リージョン)を実行(C-c C-r)
関数を実行(C-M-x)
関数・パラグラフを実行し次行へ移動(C-c C-c)
ミニバッファに式を入れて実行(C-c C-t)
現在行のみ実行(C-c C-j)
現在行を実行し次行へ移動(C-c C-n)
パラグラフを実行し次行へ移動(C-c C-p)
Eval and Goバッファ全体を実行して*R*バッファへジャンプ(C-c M-b)
選択されている範囲(リージョン)を実行して*R*バッファへジャンプ(C-c M-r)
関数を実行して*R*バッファへジャンプ(C-c M-f)
現在行のみを実行して*R*バッファへジャンプ(C-c M-j)
Motion新しいオブジェクトを編集(C-c C-d)
ESSバッファの最終行にジャンプ(C-c C-z)
ESSバッファへ切り替え(C-c C-y)
関数の先頭にジャンプ(C-M-a)
関数の末尾にジャンプ(C-M-e)
ESS List
ESS Editファイル名補完(M-TAB)
オブジェクト名補完(C-c TAB)
その他ファイルの読み込み(C-c C-l)
Rの起動R
プロセスの切り替え(C-c C-s)
<- の挿入(前後の空白つき)_ (アンダーバー)

加筆をお願いします

ソースの整形

自動インデント整形機能のためコード入力時に自動的に整形されるが、ごにょごにょ編集して再整形の必要が生じたときには、下記のコマンドを使う。

選択範囲を整形(C-M-\)
式全体の整形(C-M-q)
1行のみの整形TAB

式全体を整形したい場合は、カーソルをその式のコマンド名部分に持ってくる必要がある(ちょっと考えれば当たり前のことなんだけど)。1行のみの場合は、その行のどこにカーソルがあってTABキーを押下すれば、(その場にTABが挿入されるのではなく)正しく整形してくれる。

コメント行の整形では、「#」と「##」と「###」の動作が異なるので要注意。コメント文をインデントの位置に持ってきたい場合には、

## メイン処理

というように「##」を使う。なお、「###」では行頭になる。

「#」も「###」も「##」と同様の動作にしたいときには、Emacs上で次の式を評価する(.emacs.elなどに書いておいても良い)。

(setq ess-fancy-comments nil)

次の式を評価すれば元の動作に戻る。

(setq ess-fancy-comments t)

ESS-help

help(foo) で開いたヘルプのバッファにおいて,Example の各行に対して l で,コンソールバッファにコピーかつ評価される.

チートシート

各モードのキーバインドをまとめた一覧表。下敷きとかにはさんで使ってください。

cheatsheet.png

参考リンク

ツッコミ、ご要望もこちらから 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に標準で組み込まれている。

キー割り当て

主なキー割り当て

pオブジェクトをプロット
vオブジェクトの内容を表示
dオブジェクトに削除マークをつける
yミニバッファにオブジェクトの型を表示

その他のキー割り当て

マウス中ボタンオブジェクトの内容を表示
g最新の状態を表示
C-cコマンド
C-p または BS または ↑1行戻る
C-n または SPC または ↓1行進む
qess-rdiredを終了
sオブジェクトを並び替え
Vオブジェクトの内容を個別に表示
u削除マークを解除
?ヘルプ表示
C-c C-z*R*ウィンドウの末尾にジャンプ
C-c C-y*R*ウィンドウにジャンプ
C-c C-s

操作の例

最初に、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*という分割ウィンドウが開く。ここで、オブジェクト名の上で、上述のキーを押下すると、それぞれコマンドが実行される。

ess-rdired.png

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()の内容をツールチップで表示する。 ess-R-object-popup.el という改良版があるのでそちらの方がいいかも。

紹介動画(Youtube)


リンク


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


コメント

  • あと10日で5.2正式版をリリースされるらいしいです。 -- 2004-04-15 (木) 18:57:40
  • (define-key ess-mode-map "?177" 'delete-char)をコメントアウトするとBSキーが使えるようになりました。 -- 2004-05-27 (木) 10:36:14
  • VinePlus?にess-5.2.3をputしました。しばらくしたらapt-getできると思います。> Vineユーザのみなさん -- 谷村 2004-09-22 (水) 02:24:04
  • ess-install.sh,ess-remove.sh,ess.specに、etcに関する処理が入ってないので,アイコンが出ませんが... -- 影のess使い? 2004-09-22 (水) 09:20:56
  • 申し訳ないです。こちらの環境ではアイコンがでているので気がつきませんでした。調べてみます。 -- 谷村 2004-09-22 (水) 09:50:13
  • R教授はESSを使わないそうです. -- なかま 2005-05-07 (土) 01:48:42
  • ESS を使わない(使えない)私は落後者かと実は密かに恥じていました。Emacs の画面を分割されるのが気に入らないので、使う気になれませんでした。 -- 間瀬? 2005-05-07 (土) 07:41:56
  • わたしは単純明瞭viで. http://kriemhild.uft.uni-bremen.de/svn/vim/ -- なかま 2005-05-07 (土) 15:02:36
  • バージョン5.2.3からRを起動しても画面分割されませんので今一度試してみてください。> 間瀬先生
    5.2.8で付加されたファイル名補完機能は非常に便利です。"~/"もちゃんと展開してくれます。なかまさんのessパッケージからソースを更新しただけものをVinePlus?にputしていますが、5.2.8のパッケージもputしました。なかまさんに感謝です。 -- 谷村 2005-05-13 (金) 16:52:04
  • こちらこそ、丸投げしてすみません。継続するのが一番大変ですからこちらこそ感謝です。m(_|_)m今後ともよろしくおねがいします。(煩雑なアップデート作業に音を上げた腰抜け野郎より...ほんとにチョクチョクかわるんだもん) -- なかま 2005-05-13 (金) 17:24:46
  • fontifying問題を追加しました。 -- 黒木? 2006-05-16 (火) 13:58:31
  • ESSのメーリングリストにも投げたのですが、便利すぎるauto-complete.elのR用拡張って誰か書いていませんか。rubyとかc++用の拡張のみならず、octave用の拡張も書かれているのに、R用のものがまだありません。私家版ですでに書いている人がいれば、是非公開してみてください。auto-complete-modeが初耳の方はDemoを見てみてください。ESSのR-modeで使ってみましたが、便利すぎます。後はあらかじめキーワードなどをリストアップした拡張を作れば、さらに便利になるのですが。。。 -- 谷村 2009-03-04 (水) 12:02:57
  • 谷村さんのコメントに触発されて、遅ればせながらR用のauto-complete.el拡張elispを書いてみました。詳細については次のサイトをご覧ください。http://sheephead.net78.net/2009/04/13/1233/ -- myuhe? 2009-04-13 (月) 22:14:53
  • おぉ、ありがとうございます!すばらしい!1ヶ月も気がつかずに申し訳ありませんでした。早速使わせていただきました。便利度がかなりアップしました。でも、myuheさんはlibraryとかfunctionとかapply関数の仲間とかは使わないのでしょうか。 -- 谷村 2009-05-14 (木) 20:06:08
  • ESSユーザーです.私も使わせていただきました.Emacs22.21 on Ubuntu8.10です. -- ishida 2009-05-15 (金) 11:07:38
  • 谷村さん、ishidaさん、拙いスクリプトを使っていただいてありがとうございます。谷村さん<-他の関数群を取り込んだものもあることはあるのですが、一般的でない関数もかなり混じってしまったので、githubにあげていませんでした。需要あるかわかりませんが、近日中にあげておきます。ご希望の関数群ありましたらコメントいただけるとバージョン違いを作っておきます。 -- myuhe? 2009-05-18 (月) 21:28:59
  • R用のauto-complete.el拡張elisp、auto-complete-acr.elをさらに拡張してみました。詳しくはhttp://sheephead.net78.net/2009/06/07/1294/をご覧ください。リンク先のpythonスクリプトを使ってもらえば、独自にインストールしたパッケージの関数も補完候補にできると思います。 -- myuhe? 2009-06-07 (日) 21:04:32
  • essとauto-complete.elを使ってRオブジェクトの要約情報をツールチップで表示するess-Robject-popup.elというelispを書いてみました。詳しくは->http://sheephead.homelinux.org/2010/03/02/1807/をご覧下さい。 -- myuhe? 2010-03-02 (火) 00:57:13
  • ess-Robject-popup.elを導入してみました.とても良いです.R の実行をプレゼンしたい場面などにも効果的な気がします.使わせていただきます -- ishida 2010-03-06 (土) 15:06:05
  • R用のanything.elインターフェイスを書いてみました。詳しくはhttp://sheephead.homelinux.org/2010/05/24/1846/をご覧ください -- myuhe? 2010-05-24 (月) 07:56:45
  • ess-Robject-popup.elを使ってみました。これは本当にすばらしいです。もう少し早く気がついていれば、Rユーザ会の発表で使えたかもしれません。 -- 谷村 2010-12-08 (水) 18:49:00
  • 谷村さん、コメントありがとうございます。また何かご発表の際にでも活用していただければ嬉しいです!!! ちなみにauto-complete-acr.elも最近の修正で、オムニ補完に対応してさらに便利になりました。是非ご活用ください。 http://sheephead.homelinux.org/2010/08/27/4024/ -- myuhe? 2010-12-09 (木) 19:32:46



添付ファイル: fileess-rdired.png 2036件 [詳細] fileess-emacs-toolbar.jpg 2203件 [詳細] filecheatsheet.png 4884件 [詳細] fileessonxemacs.jpg 1768件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Google
WWW を検索 OKADAJP.ORG を検索
Last-modified: 2016-05-16 (月) 19:17:18 (75d)