R
目次
R とは?[編集]
Rはオープンソースの統計解析言語。高機能な商用の統計解析言語であるSと高い互換性を持つ。統計解析と連動したグラフの作成については最も強力なアプリケーションかと思われる。散布図行列など、いわゆるグラフソフトでは描画にかなりの手間がかかるようなグラフが簡単に描ける。
日本語の情報は wikipedia:R言語 や RjpWiki に最もよくまとまっている。
- CarbonEmacsPackage には、R ファイルを編集するのに便利な ess ライブラリが収録されている。
R for Mac OS X Developer's Page
R for Mac OS X FAQ
RStudio (R用統合環境)
Rのインストール[編集]
homebrew/science/r として用意されている。
- Homebrew でインストールする例(superenv機能を無効化している)
$ brew install --env=std r
この前提としてgfortranを使うのでインストールしておかなくてはならない。
$ brew info gfortran gfortran: stable 4.2.4 (bottled) /usr/local/Cellar/gfortran/4.2.4-5666.3 (86 files, 72M) *
なおjagsのインストールも同様にgfortran-4.2.xを使う。
$ brew install --env=std jags
- MacPorts でインストールする例
$ sudo port install R
- Fink でインストールする例
$ fink install r-base30 $ fink install r-base215
Fink では、異なるバージョンを同時にインストールすることが可能です。
Fink で、 R パッケージをインストールする例
$ fink install r-cran-sp-r30
R 内ではなく Fink でインストールすることで、依存性を自動的に解消し、また Fink が提供する外部ライブラリに適切にリンクします。 従来通り、R 内でパッケージを追加することも可能です。
AppleScript[編集]
- 参考 URL
Rの動作[編集]
例:デモ動作、および外部ファイルのプログラムを実行
$ which r /usr/bin/r $ r R version 2.15.1 (2012-06-22) -- "Roasted Marshmallows" : : > quartz() > demo("graphics") : : > source("tabplot.r") > q() Save workspace image? [y/n/c]: n $ $ cat tabplot.r library(ggplot2) library(tabplot) quartz() data(diamonds) tableplot(diamonds,nBins=500) $
例:インストール済みパッケージの一覧表示(バッチ実行)
$ echo 'library()' | r --vanilla --slave
例:インストール済みパッケージを全てアップデート(バッチ実行)
$ echo 'options(repos="http://cran.ism.ac.jp/");update.packages(ask=F)' | r --vanilla --slave
.Rprofile[編集]
.Rprofile ファイルを記述しておくと(下記のような例)、R 起動時に自動で実行される。
# cat ~/.Rprofile Sys.setenv("http_proxy"="http://proxy.domain:8080") Sys.setenv("ftp_proxy"="http://proxy.domain:8080") options(repos=c(CRAN="http://cran.ism.ac.jp/"),papersize="a4") options(device="quartz")
共有ライブラリ[編集]
Rの共有ライブラリ(インストールされているかを確認)
$ ls -ld /Library/Frameworks/R.framework/Libraries/libR.dylib ........ $ r CMD config --ldflags ........
Python[編集]
rpy2[編集]
rpy2を使ってPythonからRを使う
- インストール
- R-2.10.0.dmg # 普通のR本体のインストール http://cran.r-project.org/bin/macosx/R-2.10.0.dmg
- rpy2-2.0.8.tar.gz # 通常通りに sudo python setup.py install でインストール http://pypi.python.org/pypi/rpy2/2.0.8
- Rをソースからビルドする場合は --enable-R-shlibが必要とのこと
http://d.hatena.ne.jp/mojin/20090516/1242472855 (MacにRとrpyをインストールできた編)
- 動作テスト
import rpy2.robjects as ro r = ro.r y = r.rnorm(10) print y [1] 1.12495067 1.15631509 0.95173205 -1.06053326 -0.29232236 0.29220561 [7] -0.53520886 0.70430155 0.08485477 2.32489351
import rpy2.robjects as ro r = ro.r x = [5.05, 6.75, 3.21, 2.66] y = [1.65, 26.5, -5.93, 7.96] rfit = r.lsfit(x,y) print rfit.names print rfit.r["coefficients"] [1] "coefficients" "residuals" "intercept" "qr" $coefficients Intercept X -16.281128 5.393577
'qplot'(ggplot2内)を使う。
from pylab import * import rpy2.robjects as ro r = ro.r r.library("ggplot2") v = ro.FloatVector([0,1,2,3,4,5]) w = ro.FloatVector([3,0,5,4,7,5]) p = r['qplot'](v, w, geom = "line") r.quartz() r['print'](p) r['ggsave'](file="mypdf.pdf", plot=p)
ggplot2関係を下記のように使える('gplot'は本来の'qplot'を指すらしい)。
from pylab import * import rpy2.robjects as ro from rpy2.robjects.lib import ggplot2 r = ro.r r.quartz() # p = ggplot2.gplot(ro.FloatVector(range(20)), r.rnorm(20), geom = 'line') + \ ggplot2.scale_x_continuous('x-label') + \ ggplot2.scale_y_continuous('y-label') p.plot() # dataf = ro.DataFrame({'value1': r.rnorm(300, mean=0) + r.rnorm(200, mean=3), \ 'value2': r.rnorm(300, mean=0) + r.rnorm(200, mean=3), \ 'value3': ro.StrVector([0,]*300 + [3,] * 200)}) # gp = ggplot2.ggplot(dataf) pp = gp + \ ggplot2.aes_string(x='value1', y='value2', col='value3') + \ ggplot2.geom_point() pp.plot() # r.library('tabplot') r['tableplot'](dataf, sortCol='value2', nBins=40.0)