インフラエンジニアbacchiのわかったことまとめ

bacchi.me

Debian8にR(3.1.1)をインストールする

Debian8にRをインストールした際のメモ。

Rのインストール

source.list に追加することなくapt-get install で入りました。

[root@gealach] ~
# apt-get install r-base
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  autotools-dev build-essential bzip2-doc cdbs dpkg-dev g++ g++-4.9 gfortran gfortran-4.9 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libblas-dev libbz2-dev libdpkg-perl
  libfile-fcntllock-perl libgfortran-4.9-dev libjpeg-dev libjpeg62-turbo-dev liblapack-dev liblzma-dev libncurses5-dev libpcre3-dev libpcrecpp0 libpng12-dev libreadline-dev libreadline6-dev
  libstdc++-4.9-dev libtcl8.5 libtinfo-dev libtk8.5 r-base-core r-base-dev r-base-html r-cran-boot r-cran-class r-cran-cluster r-cran-codetools r-cran-foreign r-cran-kernsmooth r-cran-lattice
  r-cran-mass r-cran-matrix r-cran-mgcv r-cran-nlme r-cran-nnet r-cran-rpart r-cran-spatial r-cran-survival r-doc-html r-recommended zlib1g-dev
提案パッケージ:
  devscripts debian-keyring g++-multilib g++-4.9-multilib gcc-4.9-doc libstdc++6-4.9-dbg gfortran-multilib gfortran-doc gfortran-4.9-multilib gfortran-4.9-doc libgfortran3-dbg liblzma-doc ncurses-doc
  readline-doc libstdc++-4.9-doc tcl8.5 tk8.5 ess r-doc-info r-doc-pdf r-mathlib debhelper texlive-base texlive-latex-base texlive-generic-recommended texlive-fonts-recommended texlive-fonts-extra
  texlive-extra-utils texlive-latex-recommended texlive-latex-extra
以下のパッケージが新たにインストールされます:
  autotools-dev build-essential bzip2-doc cdbs dpkg-dev g++ g++-4.9 gfortran gfortran-4.9 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libblas-dev libbz2-dev libdpkg-perl
  libfile-fcntllock-perl libgfortran-4.9-dev libjpeg-dev libjpeg62-turbo-dev liblapack-dev liblzma-dev libncurses5-dev libpcre3-dev libpcrecpp0 libpng12-dev libreadline-dev libreadline6-dev
  libstdc++-4.9-dev libtcl8.5 libtinfo-dev libtk8.5 r-base r-base-core r-base-dev r-base-html r-cran-boot r-cran-class r-cran-cluster r-cran-codetools r-cran-foreign r-cran-kernsmooth r-cran-lattice
  r-cran-mass r-cran-matrix r-cran-mgcv r-cran-nlme r-cran-nnet r-cran-rpart r-cran-spatial r-cran-survival r-doc-html r-recommended zlib1g-dev
アップグレード: 0 個、新規インストール: 53 個、削除: 0 個、保留: 0 個。
73.0 MB のアーカイブを取得する必要があります。
この操作後に追加で 154 MB のディスク容量が消費されます。
続行しますか? [Y/n]

省略

Rコマンドを実行すると、バージョンの確認ができます。

[root@gealach] ~
# R

R version 3.1.1 (2014-07-10) -- "Sock it to Me"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。
 一定の条件に従えば、自由にこれを再配布することができます。
 配布条件の詳細に関しては、\'license()\' あるいは \'licence()\' と入力してください。

R は多くの貢献者による共同プロジェクトです。
 詳しくは \'contributors()\' と入力してください。
 また、R や R のパッケージを出版物で引用する際の形式については
 \'citation()\' と入力してください。

 \'demo()\' と入力すればデモをみることができます。
 \'help()\' とすればオンラインヘルプが出ます。
 \'help.start()\' で HTML ブラウザによるヘルプがみられます。
 \'q()\' と入力すれば R を終了します。

> q()
Save workspace image? [y/n/c]: n

試しに動かしてみる

せっかくRを入れたので、グラフを描画してみます。

今回描画するのは一時話題になったジバニャン方程式w

https://gist.github.com/Akiyah/4da6d04cf7c0f6e33f94

画像ファイルを出力するように少し手を加えます。

[root@gealach] ~
# cat jibanyan.R
png("image.png", width = 500, height = 500, pointsize = 12, bg = "white")
jibanyan_equation <- function(x,y) {
  min(max(min(1-(x/108)^2-(y/94)^2,y),min(1-((abs(x)-119)/103)^2-((y-56)/86)^2,1-((abs(x)-15)/77)^2-((y-119)/100)^2),1-((abs(x)-42)/66)^2-(y/55)^2,min(55+y,51-abs(x),-y)),3*abs(y-100)-2*(x-75)) *
  min(min(max(min(1-(x/106)^2-(y/92)^2,y),min(1-((abs(x)-119)/101)^2-((y-56)/84)^2,((abs(x)-99)/40)^2+((y-54)/86)^2-1,92-abs(x)),1-((abs(x)-42)/64)^2-(y/53)^2),min(((abs(x)-52)/26)^2+((y+28)/26)^2-1,((abs(x)-51)/13)^2+(y/13)^2-1,max(abs(x)-51,y))),abs(x/51+10/51*sin(abs(y/61.2)^(1.2)*pi*(7/2)))^(2/3)+abs(y/61.2)^(2/3)-1) *
  min(1-(x/32)^2-((y+30)/32)^2,1-((abs(x)+5)/22)^2-((y-18)/22)^2) *
  min(1-((abs(x)-18)/20)^2-((y+10)/20)^2,((abs(x)-20)/22)^2+((y+7)/20)^2-1) *
  (1-((abs(x)-51)/11)^2-(y/11)^2)
}

x <- seq(-150, 150, length=400)
z <- outer(x,x, Vectorize(jibanyan_equation))
contour(x,x,z, drawlabels=FALSE, levels=0)
graphics.off()

Rスクリプトの実行はRscriptコマンドを実行します。

それなりにコストのかかる処理のようで、少し待たされます。

[root@gealach] ~
# /usr/bin/Rscript jibanyan.R
[root@gealach] ~
# ll image.png
-rw-r--r-- 1 root root 11503  7月 29 09:09 image.png

できたら、ブラウザで見てみます。

_人人人人人人人人人_
> ジ バ ニ ャ ン <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄

  • B!