R

提供: MacWiki
移動: 案内検索

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[編集]


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を使う

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)

参考リンク[編集]

Wiki内の関連ページ[編集]