Emacs Speaks Statistics(Rを使用)を学習するための適切な参照/アドバイスは何ですか?


9

私は数年前からRを使用していますが、常にTinn-R、JGR、最近ではR-StudioなどのGUIを使用しています。

R-Studioのインターフェイスは好きですが、グラフィックスが少ない/ない長いプログラムでは、Emacsのようなより基本的なテキストエディターが提供するショートカットを利用することで、より効率的にコーディングできると思います。

EmacsとESSプラグインをインストールしましたが、すべてが正常に機能しており、コードをいくつかテストしましたが、慣れるのに苦労しており、適切なリファレンスマニュアルが見つかりません。

Google検索では、主にプラグインのインストールと構成に焦点を当てたチュートリアルを含む、非常に日付の古いWebサイトがいくつか返されます。公式Webサイトのマニュアルは、私には少々密度が高すぎます。

私は、Rに精通しているがEmacsに精通していない人のために設計された、比較的簡単な紹介(理想的にはスクリーンショットとホットキーのリストを含む)を探しています。

はじめに参考文献やその他のヒントをいただければ幸いです。

回答:


11

まず、emacsで動作する基本的なテキストを学ぶ必要があります。emacsは非常に洗練されているため、単にテキストとコピーを選択する方法を見つけるのは難しいかもしれません。ですから、それを効率的に行う方法を見つけるために、少し時間をかけてください。マニュアルを読むと役立つかもしれません。Mac OS XではAquamacsを使用し、ネイティブショートカットをサポートしています。

ESSでの作業は、Rでの作業と違いはありません。コードを編成するための同じルールを適用する必要があります。私の場合、すべてのプロジェクトには、ホームディレクトリにあるRという親ディレクトリにある独自のディレクトリがあります(Windowsの場合、すべてのソースが存在するディレクトリをemacsホームディレクトリに指定することをお勧めします)。したがって、プロジェクトでの作業にESSを使用するときはM-x R、常にプロジェクトの開始ディレクトリを選択します。

Rプロセスを開始した後、私は通常、emacsを2つのウィンドウに分割します(emacs用語)。次に、左側にソースコードがあり、右側のRプロセスに送信します。関連するショートカット(これらはemacsショートカットです)はC-x 3、ウィンドウを垂直方向に分割するためC-x 1、現在のバッファーを唯一のウィンドウにするC-x 2ため、およびウィンドウを水平方向に分割するためのものです。

コードをRに送信するときは、関数とRステートメントを区別しています。これを行うには、すべての関数を、通常と呼ばれる1つのファイルに保存します10code.R。次に、ESSファイルのロードオプション(ショートカットC-c C-l)を使用して、このファイルを単にロードできます。このアプローチの利点は、すべての関数を調達し、Rバッファーに何も生成しないことです。コードにエラーがある場合、ESSはミニバッファーにメッセージを表示し、C-c` を押してそれを調査できます。

もう1つのコードはRステートメントであり、私はそれを自明にしておきます。データのロード、データのクリーン、統計モデルの適合、結果の検査、最終結果の生成を行います。これらのステートメントのソースコードは、プロジェクトの現在のステータスです。意図は、プロジェクトが完了した後、このコードでファイルを調達し、プロジェクトを再現することです(私は履歴の追跡にもgitを使用しています)。このファイルを操作するとき、私は通常、1つのRステートメントのみを使用しC-c C-cます。これは、eval関数、段落、ステートメントコマンドを介してRプロセスに送信し、ショートカットはです。このコマンドは、段落、つまり改行で区切られたテキストをRプロセスに送信します。Rステートメントをタスクにグループ化し、タスク全体をRプロセスに送信できるため、これは便利です。また、テキストを選択する必要がないため、非常に便利です。ショートカットC-c C-c カーソルをRウィンドウに移動するという利点があり、送信されたRステートメントの結果をすぐに検査できます。

したがって、私の基本的なワークフローは、ウィンドウとバッファの間を頻繁に移動することです。これを容易にするために、.emacsファイルで次のショートカットを使用します。

(define-key global-map [f1] 'Control-X-prefix)
(define-key global-map [f3] 'find-file)
(define-key global-map [f2] 'save-buffer)
(define-key global-map [f8] 'kill-buffer)
(define-key global-map [f5] 'switch-to-buffer)
(define-key global-map [f6] 'other-window)
(define-key global-map [f9] 'ess-load-file)

私はめったに使用しませんf1が、他のすべては非常に頻繁に使用します。私が使用するその他の特定のESS設定は次のとおりです。

(setq comint-input-ring-size 1000)
(setq ess-indent-level 4)
(setq ess-arg-function-offset 4)
(setq ess-else-offset 4)

これはESSにタブを4文字幅(デフォルトは2)にするように指示します。これは私の個人的な好みであり、ESSが履歴として保存する発行済みコマンドの数を拡張します。

Rプロセスを直接操作する場合、次のショートカットが非常に役立つことがわかりました。

(add-hook 'inferior-ess-mode-hook 
      '(lambda nil 
         (define-key inferior-ess-mode-map [\C-up] 'comint-previous-matching-input-from-input)
             (define-key inferior-ess-mode-map [\C-down] 'comint-next-matching-input-from-input)
        (define-key inferior-ess-mode-map [\C-x \t] 'comint-dynamic-complete-filename)
        )
)

これは、Rステートメントの履歴からRステートメントを呼び戻しますが、すでに行にあるものと一致させようとします。たとえばpl、Rプロセスを入力して押すと\C-up(それはコントロールと上矢印)、で始まるすべてのステートメントが循環するplため、たとえばすべてのplot(...コマンドが呼び出されます。

私がESSで使用する最後の設定は次のとおりです。

(setq ess-ask-about-transfile t)

この方法では、ESSは常に、Rプロセスを使用してテキストをバッファーのどこに保存するかを尋ねます。私は通常これらのファイルに日付に従って番号を付けるので、自分が何をしていたかを正確に追跡する別の方法が常にあります。このオプションの唯一の注意点は、何らかの理由により、ESSはRをロードした後、Rバッファーを読み取り専用に設定することですC-x C-q。バッファーを書き込み可能にするためのショートカットはです。

したがって、これらはESSでの作業に使用する私の設定であり、私はそれらに満足しており、すでに数年間何かを追加する必要を感じていませんでした。初めてのユーザーにESSを紹介するときは、通常、この概要を説明します。

最後に、Emacs、特にESSで作業するときに最も使用されるショートカットである最後のショートカットを使用しC-gます。これにより、ミニバッファーでコマンドが終了します。私はEmacsとESSを使用して何年にもわたって仕事をしてきましたが、私は不要なEmacsコマンドを呼び出すことができましたがC-g、これらの状況では非常に役立ちます。


ありがとうございました!この情報は非常に役立ちます。同様の方法でEmacsセットアップを構成しようとします。オペレーティングシステム固有のポイントについては、私はLinux(Fedora 15)を使用しているため、構成/レイアウトに違いがあるかどうかはわかりません。
ウィル

Fedoraでは、プレーンなemacsを取得する必要があります。古すぎる可能性があるので、Fedoraが提供するバージョンを使用する代わりに、手動でESSをインストールすることをお勧めします。したがって、基本的にはまずテキストがどのように操作され、どのキーがメタであるかを確認します。私M-w C-y C-wはコピー、貼り付け、カットとして機能すると思います。
mpiktas '29

2

あなたがどこにいるかによっては、これはうまくいかないかもしれませんが、私はホールの下でそれを使用して質問をせがむ人を見つけました。それにこだわって、それだけの価値があります!

特に便利だと思ったヒントの1つは、cua-modeを使用することでした。これにより、emacsは最新のプログラムと最も一般的なキーボードショートカット(保存、切り取り、コピーなど)を共有できます。また、cua-modeで長方形モードを使用する方がはるかに簡単です。


2
ヒントをありがとう、CUAモードを有効にしました。もう1つのヒントについては、ESSを学ぶための私の元々の動機の1つは、講義中に教授の1人がコードを編集する速さを観察することでした。夏休みですが、帰ってきたら「メンター」を探すようにしています。
2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.