Linux Mintって?
Ubuntu派生のディストロで、使いやすくてUIもよい。
Unityなんてなかった!!(本家Ubuntuでも18からGnomeに戻るらしい)
別にRedHat系でもOpenSuse系でもよいのだけれど、Linuxにすると、RStudioServerが使えて、色んな端末から同じ環境で計算ができるようになる。
やったネ!
ホントはDockerコンテナとか使うともっといいらしいのだけれど、こういうのはちょっとずつね。
今回の動作環境
第7世代Intel CPUにLinux Mint 18.1
RとRStudioServerのインストール
ここに書いてある通りにするだけ。
できたらhttp://localhost:8787/にアクセスしてみよう
英語は嫌だという人のために必要部をコピペしておくと
64bit版のLinux MintやUbuntu,Debianなら
$ sudo apt-get install r-base
$ sudo apt-get install gdebi-core
$ wget https://download2.rstudio.org/rstudio-server-1.0.143-amd64.deb
$ sudo gdebi rstudio-server-1.0.143-amd64.deb
を実行するだけ簡単!
needsの導入
needsパッケージは複数パッケージの読み込みを容易にしつつ、存在しないパッケージを自動でインストールしてくれる優れもの。
詳しい紹介はuriさんの記事を参照。
導入手順としてgithubのページには
install.packages("needs")
# for the dev version:
# devtools::install_github("joshkatz/needs", ref = "development")
library(needs)
# answer "yes" when prompted, and you will never have
# to type library or install.packages again. hooray.
と書かれているが、ターミナルに$ Rと入力してRを立ち上げ、上記を実行しても失敗する。
エラーメッセージのコピーを忘れてしまって申し訳ないが、書き込み制限のある設定ファイルをいじるのが原因のようなので、$sudo RとしてRをスーパーユーザーで立ち上げてやればよい。
tidyverseの導入
みんな大好きtidyverseだが、いかんせん多数のパッケージの集合体であるために、依存関係が複雑なようだ。
R内でのパッケージの依存関係はもちろんのこと、OS側のソフトの依存関係にも注意が必要。
今回の環境では以下の順でコードを実行すると、うまくtidyverseを導入できた。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential gfortran g++ libcurl4-openssl-dev libxml2-dev
$ R
> install.packages("readxl")
> install.packages("tidyverse")
上述のneedsを早速使って"tidyverse"をインストールしたいところだが、install.packagesのほうが、インストール過程の詳細なメッセージが見られるので、今回は後者を推す。
うまくいかなかった場合はメッセージを確認しよう。
RStudioServerをインストールした人は、Rコード部分はRStudioServer上でやってもいい。
/bin/bash: g++: command not found
のようなメッセージが出てきた場合は、システム側に不足なソフトウェアがある(上述の場合はg++)
大体のtidyverseインストール周りのトラブルはこのエラーに起因している。
一通りシステムに必要なソフトをインストールしたら、もう一度、tidyverseをインストールしてみよう。
Error in library.dynam(lib, package, package.lib) :
shared object ‘readxl.so’ not found
というようなメッセージがあれば、個別にRのパッケージをインストールしてみるといい(上述の場合はreadxl)。
これで、だいたいRを快適に利用できるようになったはずだ。
その他のパッケージの導入
このあたりはお好みで。
needs(data.table, pipeR)
data.tableは、data.frameの拡張するもの。
他に、表形式ファイルをbase::read.csvなどよりも高速に読み込めるfreadや、base::write.csvなどよりも高速に書き込めるfwriteなどの関数が用意されている。
pipeRはRでパイプラインを可能にするパッケージ。
magrittrとライバル関係(?)にあたるが、パフォーマンスなどの観点でpipeRの方が優れているらしい。