[[ESS]] --- Emacs Speaks Statistics

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

** iESS [#a0c18444]
:R 起動 (''M-x R'')| 複数の R を起動することが可能.

:R 終了 (''C-c C-q'')|  関連するバッファも全て消してくれる

:最初からESSモードでemacsを起動する方法| コマンドラインから

// --  SIZE(10){2003-07-23 (水) 17:16:53}
 $ emacs -f R &

//#comment

:コマンド履歴 (''M-p'', ''M-n'')|
:コマンド履歴の検索 (''M-r'', ''M-s'')|
:ヘルプ参照 (''C-c C-v'') |
:オブジェクト一覧 (''C-c C-x'')|

** ESS モード (R モード) [#j58966ae]
|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'')|
|~| <- の挿入(前後の空白つき)|''_'' (アンダーバー)|
加筆をお願いします

// :バッファから R へ直接コマンドを送る|
// 
// -バッファ全体 (''C-c C-b'')
// - 選択されている範囲(リージョン) (''C-c C-r'')
// - 関数 (''C-c C-f'')
// - 一行 (''C-c C-j'')

*** ソースの整形 [#sab1766b]
自動インデント整形機能のためコード入力時に自動的に整形されるが、ごにょごにょ編集して再整形の必要が生じたときには、下記のコマンドを使う。
|選択範囲を整形|(''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 [#w1ea00fb]
help(foo) で開いたヘルプのバッファにおいて,Example の各行に対して ''l'' で,コンソールバッファにコピーかつ評価される.

----

//------------------------------------------------------------
* ESS 利用の流れ [#g8f34f18]
** 例1:関数を書いてロードする [#h9411c28]

//R 起動
// M-x R
//
//オブジェクト名を決める ~
//バッファが用意される
// C-c C-d: オブジェクト名

オブジェクト(関数など)記述
  my.func <- function()
  {
    print( "hello" )
  }

//Rを自動的に起動させて、オブジェクトを R 環境にロードする ~
//ここでは今書いた ''my.func()'' 関数をロード ~
''my.func()'' の定義文のどこか、または、末尾の ''}'' の後ろで,
 C-c M-f
初回はStarting Data Directroyの場所を尋ねられるが、そのままEnterを押下すると、Rが
自動的に起動し、''my.func()'' の定義文は実行され、Rのスクリプトを編集してい
るバッファが2つに分裂し、R実行環境である*R*バッファが現れ、その*R*バッファに
カーソルが移動する、という一連の動作が行われる。

//R 実行環境に移動する
//  C-c C-y

** 例2:編集中のRコードをとにかく実行する [#hadc50e0]
とにかく編集中のRコードを実行するには、
 C-c C-c
とする。カーソルが置かれている文脈を自動判別して、パラグラフまたは関数を実行してくれる。パラグラフは、空行で区切られたRコードのかたまりである。もし、Rスクリプトに空行が1行もない場合は、全体が実行されてしまうので、適当に空行を入れる癖をつけた方がよい(と思う)。


** 例3:要らない部分をコメント化 [#i574e9e9]
Rスクリプトの最大の利点の1つが、再実行・再現が簡単な点である。Rスクリプト全体を実行するときに不要になる
部分は、コメント化しておきたい。

コメント化したい部分を選択して
 M-x comment-region
で選択部分がコメント化される。次にバッファ全体を実行するには下記のようにする。
 C-c C-b
コメント化した部分を元に戻すには、有効化したいRコードを選択して
 M-x uncomment-region
とする。


----
* 便利な関数 [#d5fb2bc6]
** スクリプト作成中にヘルプを見る [#a436e3ce]
ESS[R] モードで関数やスクリプトを書いているときに「あの関数のヘルプを見たい」場合は
  M-x ess-help 関数名
でヘルプバッファが開きます.関数名の補完もしてくれます.

** Emacs を利用しているものとは異なる計算機でスクリプトを実行する [#sa02ec82]

** Rの起動オプションを渡したい場合 [#qb0ff13a]
例えば、--vanillaをつけてRを起動したい場合は、設定ファイルに
 (setq inferior-R-args "--vanilla")
と書く。


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS