R
グラフを書きたいので導入。
インストール
CRAN: The Comprehensive R Archive Network からバイナリを持ってきてインストール。
今回は R-2.11.0.pkg を使いました。Snow Leopard でも何の問題もなくインストール完了。
ESS
上記のインストール方法だと GUI ツールもついてくるけど、Emacs から操作したいってことで ESS を導入する(現在のヴァージョンは 5.8)。Emacs Speaks Statistics から zip か tgz を持ってきて展開。Makeconf を適当に編集して make && sudo make install。
# Makeconf の設定例 DESTDIR=/Applications/Emacs.app/Contents/Resources EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs LISPDIR=$(PREFIX)/site-lisp/ess INFODIR=$(PREFIX)/info ETCDIR =$(PREFIX)/site-lisp/ess/etc
auto-complete-mode 用の拡張もあるので持ってくる。
GitHub: auto-complete-acr.el
.emacs の設定はこんな感じ。面倒な場合は (require 'ess-site) だけでいい。これで .r か .R を読み込むと ess-mode になる。または M-x R-mode。
;;; ESS v5.8 on Emacs 23.2 (autoload 'R-mode "ess-site" "Emacs Speaks Statistics mode" t) (setq auto-mode-alist (cons '("\\.[rR]$" . R-mode) auto-mode-alist)) (eval-after-load "ess-site" '(progn (setq ess-ask-for-ess-directory nil) ;; キーバインド (require 'skeleton) (defun my-skeleton-setup () (dolist (var '(skeleton-pair skeleton-pair-on-word)) (unless (local-variable-p var) (set (make-local-variable var) t)))) (defun my-insert-char-&-space () (interactive) (progn (self-insert-command 1) (insert " "))) (defun my-inferior-ess-key-bindings () (my-skeleton-setup) (local-set-key (kbd ",") 'my-insert-char-&-space) (local-set-key (kbd "\"") 'skeleton-pair-insert-maybe) (local-set-key (kbd "(") 'skeleton-pair-insert-maybe) (local-set-key (kbd "{") 'skeleton-pair-insert-maybe) (local-set-key (kbd "[") 'skeleton-pair-insert-maybe) (local-set-key (kbd "<") (lambda () (interactive) (insert " <- "))) (local-set-key (kbd "=") (lambda () (interactive) (insert " = ")))) (add-hook 'inferior-ess-mode-hook 'my-inferior-ess-key-bindings) (defun my-ess-key-bindings () (my-inferior-ess-key-bindings) ;; 元の advice を無視しているので注意。(ess-roxy-newline at ess-roxy.el) (local-set-key (kbd "<RET>") 'reindent-then-newline-and-indent) (set (make-local-variable 'backward-delete-char-untabify-method) 'all) (local-set-key (kbd "<DEL>") 'backward-delete-char-untabify)) (add-hook 'ess-mode-hook 'my-ess-key-bindings) ;; auto-complete-acr ;; auto-complete-mode の細かい設定は他でやっているので割愛。 (require 'auto-complete-acr) (setq ac-modes (append ac-modes '(ess-mode)))))
使い方(少しだけ)
.xls の読み込み
.xls はそもそも読み込めないらしい(windows だと出来るかも?)。仕方ないので Excel のデータを .csv で保存して読み込む。
# ~/foo.csv のデータを読み込んで変数 data に格納。 data <- read.csv("/path/to/foo.csv", header = T)
プロット
# x, y は属性名。tcl が正の数だと内側に目盛りが出る。 plot(data[,c("x")], data[,c("y")], tcl = .1)
保存
# eps として保存。 dev.copy2eps(file="foo.eps") # pdf として保存。プロットする前に pdf() しておく。 pdf() plot() dev.off()
雑感
少ししか触ってないけど、グラフの体裁を整えるオプションはけっこう多い気がする。少なくとも昔使ってた gnuplot よりはいい感じ。最近 Mathematica を使い始めたのでしばらくそれと併用してみよう。