RStudio vs Emacs

Japan.R 2016

@y__mattu

2016/11/27

はじめに

自己紹介

  • 松村優哉(@y__mattu)
  • 匿名知的集団ホクソエム(2016.3-)
  • 大学 4 年生
  • 計量経済学、ベイズ統計、因果推論、マーケティング
  • 言語: R, SAS, Python
  • Japan.R 運営チーム
  • 近況: 春から慶應

icon

アウトライン

  • R のプログラミング環境
  • RStudio の強い機能を Emacs で
  • (たぶん) RStudio ではできないこと
  • (現状) RStudio じゃないとできないこと
  • 最後に

R のプログラミング環境

やっぱ定番! RStudio!

  • R の統合環境のデファクトスタンダード
  • R で分析するための機能はほぼ揃ってる
  • レポート作成もできるし最高!

RStudio 社の Hadley 氏も

RStudio は、ほとんどの R ユーザーにとってベストだと私が考えている開発環境です。

『 R パッケージ開発入門』より

Hadley 氏は一方で

RStudio の唯一の競争相手は、Emacs Speaks Statistics (ESS) (https://ess.r-project.org/) だと思います。Emacs を学び、自分に合うようにカスタマイズする時間を費やすのを惜しまない人にとっては、やりがいのある開発環境でしょう。

『 R パッケージ開発入門』より

ESS とは

  • Emacs で統計関連の言語を記述・実行するためのパッケージ
  • 対応言語は R, S-PLUS, SAS, STATA, BUGS/JAGS, Julia
  • 構文ハイライトの色、ウィンドウ構成など挙動の全てをカスタマイズ可能
  • 設定は Emacs Lisp で書く
  • Emacs なのでキーボードでほとんどの操作が可能

スクリーンショット

*.R ファイルを開くと自動でウィンドウ分割して R を起動するよう設定 ess-r

ウィンドウ切り替えも

切り替えを好みのショートカットで一発 window

RStudio の強い機能を Emacs で

補完

  • auto-complete.el
  • ライブラリ名もオブジェクト名も関数名もバッチリ

ac

オブジェクトのサマリー

  • ess-R-object-popup.el
  • オブジェクト上にカーソルを合わせて \C-c \C-g (ctrl+c+g)str()summary() の結果がポップアップ表示

popup

オブジェクトの中身

  • ess-R-object-popup.el
  • オブジェクト上にカーソルを合わせて \C-c v (ctrl+c v) で 中身が別ウィンドウで開く

view

関数のヘルプ

  • helm-R.elで絞り込むと

helmR

こんな感じで読める

RmeCabC_help

R Markdown

  • polymode.el
  • 一つのバッファに複数の
    言語モードを混在させる
    → R + Markdown
    →どっちもきちんとハイライトされる
  • rmarkdown::render() を実行する Emacs の関数を作り HTML 化

rmd

R Notebook

  • RStudio 1.0 から正式採用
  • HTML 変換は R Markdown の YAML
    • output: html_notebook
  • インライン画像表示はinlineR.el (Emacs は元々普通に画像表示ができる)

rmd

ウィンドウ管理

  • e2wm-R.el

window2

(たぶん) RStudio ではできないこと

パラグラフ単位での実行

  • \C-c \C-c でパラグラフを実行
  • \C-c \C-j で現在行を実行
    →範囲選択の必要なし !

オブジェクトへの色付け

  • ~/.emacs.d/init.el (Emacs の設定ファイル) に以下のように書く。お好みで。
(defvar ess-R-fl-keyword:assign-vars
  (cons "\\(\\(?2:\\s\"\\).+\\2\\|\\sw+\\)\\s-*\\(<-\\)"
        '(1 font-lock-variable-name-face)))

(add-to-list 'ess-R-font-lock-keywords '(ess-R-fl-keyword:assign-vars . t) t)

highlight

“<-” の一発入力

  • _ を入力すると自動で <- になる
  • 普通に _ にしたいときは _ を二回続けて入力

(現状) RStudio じゃないとできないこと

マウスでグリグリするやつ

javascript ベースで描画するパッケージ (leafret, plotly, dygraphs,…) はブラウザじゃないと見られない
→テキストエディタの限界?

希望はある?

  • xwidget(Emacs 25 より正式実装)
  • Emacs 上でフルブラウザが動く
  • javascript ももちろん動く

最後に

環境選び

RStudio が向いてる人

  • R しか使わない
  • 細かいことにこだわらない
  • RStudio が好き
  • RStudio でいい
  • Lisp とかめんどい。

ESS が向いてる人

  • 複数言語を使用、全部を同じキーバンドでやりたい
  • 自分に合う環境を作り込みたい
  • RStudio が嫌い
  • マウスを使いたくない

続きはアドカレで!

この話の詳細(実装方法など)は RStudio Advent Calendar 22 日目の記事で書く予定です

Enjoy !!

本日の資料置き場

GitHub