pyてよn日記

一寸先は闇が人生

Mac OS で R,RStudio のインストール & Bioconductor のパッケージを使えるようにする

Homebrew Cask(Homebrew のデスクトップアプリ版)を用いて R,RStudio,各種パッケージをインストールしたときのメモ書き.

開発環境

  • OS
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.5
BuildVersion:   19F10
  • Homebrew
$ brew --version
Homebrew 2.4.8
Homebrew/homebrew-core (git revision 1dd0; last commit 2020-07-20)
Homebrew/homebrew-cask (git revision f49dd; last commit 2020-07-20)

インストール手順

  1. Homebrew Cask で R のインストール
  2. Homebrew Cask で RStudio のインストール
  3. R を起動しパッケージのインストール

手順 1,2 は順不同だが,R をインストールをしていないと当然 RStudio が起動しないため R からインストールすると良い(R が無い状態で RStudio を起動しようとすると「R のバイナリが無い」と怒られる).

1. Homebrew Cask で R のインストール

$ brew cask install r

R はインストールした状態だと文字コードの設定が UTF-8 になっていないため自分で設定し直す必要がある.しかし,RStudio のデフォルトは UTF-8 になっているため問題ない.R 単体で利用するときに気になると言う人は以下を参照して文字コードの設定を行うと良い(正確には locale.言語と地域の設定.).

maku77.github.io

2. Homebrew Cask で RStudio のインストール

$ brew cask install rstudio

3. R を起動しパッケージのインストール

Bioconductor からパッケージをインストールする.コマンドだけ知りたい場合こちら

  1. R を起動
  2. install.packages("BiocManager") を実行 -> CRAN の選択(Japan(Tokyo)[https] を選択) -> BiocManger がインストールされる
  3. BiocManager::install() を実行 -> Update all/some/none? [a/s/n]: -> a を選択しインストール済みのパッケージを全てを更新
  4. BiocManager を用いて各種パッケージのインストール:BiocManager::install("[package-name]")

BiocManager では,Bioconductor だけでなく CRAN から提供されているパッケージもインストールできる.今回は以下のパッケージをインストール.

  • CRAN
    • Rcmdr(R commander)
    • scatterplot3d
    • TeachingDemos
    • multcompView
    • cluster
    • faraway
  • Bioconductor
    • edgeR
    • qvalue(多重検定補正,Bonferroni 法,Benjamini-Hochberg 法,Storey 法)

以下の公式ドキュメントにて Bioconductor から提供されているパッケージ一覧を見ることができる(R 上で BiocManger::available() を実行することで一覧表示することもできる).

www.bioconductor.org

補足資料.FDR について(パッケージ "qvalue" の使い方).

www.slideshare.net

3. R を起動しパッケージのインストール(コマンドのみ)

> chooseCRANmirror()  # CRAN の選択
> install.packages("BiocManager")
> BiocManager::version()  # BiocManager のバージョンを表示
> BiocManager::install()  # パッケージの update
> BiocManager::install(c("Rcmdr", "scatterplot3d", "TeachingDemos", "multcompView", "cluster", "faraway", "edgeR", "qvalue"))
> BiocManager::install()
> ip = as.data.frame(installed.packages()[,c(1,3:4)])
> ip = ip[is.na(ip$Priority),1:2,drop=FALSE]
> ip
                    Package    Version
BH                       BH   1.72.0-3
BiocManager     BiocManager    1.30.10
BiocVersion     BiocVersion     3.11.1
DBI                     DBI      1.1.0
Formula             Formula      1.2-3
Hmisc                 Hmisc      4.4-0
MatrixModels   MatrixModels      0.4-1
R6                       R6      2.4.1
RColorBrewer   RColorBrewer      1.1-2
Rcmdr                 Rcmdr      2.6-2
...

Rcmdr の読み込み

R では libarary([package-name]) でパッケージをメモリ上に読み込む.Rcmdr が読み込まれると新しく Rcmdr 用の Window が立ち上がる.

下記では,RStudio のコンソールから Rcmdr を読み込もうとしたがエラーが出た.Rcmdr を開く際に必要となる GUI 環境である X11Mac OS のための実装は XQuartz と呼ばれる.参考:X Window System(X11)とは - IT用語辞典 e-Words)がインストールされていなかった.そのため Homebrew Cask を用いて X11 をインストールした.

  • Rcmdr の読み込み(エラー)
> library(Rcmdr)
Loading required package: splines
Loading required package: RcmdrMisc
Loading required package: car
Loading required package: carData
Loading required package: sandwich
Loading required package: effects
Registered S3 methods overwritten by 'lme4':
  method                          from
  cooks.distance.influence.merMod car 
  influence.merMod                car 
  dfbeta.influence.merMod         car 
  dfbetas.influence.merMod        car 
lattice theme set by effectsTheme()
See ?effectsTheme for details.
Error: package or namespace load failed for 'Rcmdr':
 .onLoad failed in loadNamespace() for 'tcltk', details:
  call: fun(libname, pkgname)
  error: X11 library is missing: install XQuartz from xquartz.macosforge.org
  • Homebrew Cask による X11(XQuartz)のインストール
$ brew cask install xquartz
  • もう一度読み込む(エラー)
> library(Rcmdr)
Loading required package: splines
Loading required package: RcmdrMisc
Loading required package: car
Loading required package: carData
Loading required package: sandwich
Loading required package: effects
Registered S3 methods overwritten by 'lme4':
  method                          from
  cooks.distance.influence.merMod car 
  influence.merMod                car 
  dfbeta.influence.merMod         car 
  dfbetas.influence.merMod        car 
lattice theme set by effectsTheme()
See ?effectsTheme for details.
Error: package or namespace load failed for 'Rcmdr':
 .onLoad failed in loadNamespace() for 'Rcmdr', details:
  call: structure(.External(.C_dotTclObjv, objv), class = "tclObj")
  error: [tcl] invalid command name "tk_messageBox".
In addition: Warning message:
In fun(libname, pkgname) : couldn't connect to display ":0"

下記のブログを見ると,XLConnect というライブラリが足りていないらしい(X11 に接続するためのライブラリ?).

shinyaa31.hatenablog.jp

  • XLConnect のインストール(BiocManager を用いている)
> BiocManager::install('XLConnect')
Bioconductor version 3.11 (BiocManager 1.30.10), R 4.0.2 (2020-06-22)
Installing package(s) 'XLConnect'
also installing the dependency ‘rJava’

trying URL 'https://cran.rstudio.com/bin/macosx/contrib/4.0/rJava_0.9-13.tgz'
Content type 'application/x-gzip' length 756445 bytes (738 KB)
==================================================
downloaded 738 KB

trying URL 'https://cran.rstudio.com/bin/macosx/contrib/4.0/XLConnect_1.0.1.tgz'
Content type 'application/x-gzip' length 22898238 bytes (21.8 MB)
==================================================
downloaded 21.8 MB

The downloaded binary packages are in
    /var/folders/39/vsq_bhlx6ybcft9z3xdgfm2m0000gn/T//RtmpruGZg8/downloaded_packages
  • 再度 Rcmdr の読み込み(エラー)
    • X11 を動かすための Java のバージョンがダメだった(自分のローカルにあるのが 14 で必要なのは 8<=,<=11 らしい)
> library(Rcmdr)
Error: package or namespace load failed for ‘Rcmdr’:
 .onLoad failed in loadNamespace() for 'Rcmdr', details:
  call: structure(.External(.C_dotTclObjv, objv), class = "tclObj")
  error: [tcl] invalid command name "tk_messageBox".
> library(XLConnect)
Error: package or namespace load failed for ‘XLConnect’:
 .onLoad failed in loadNamespace() for 'XLConnect', details:
  call: fun(libname, pkgname)
  error: Installed java version 14+36-1461 is not between Java>=8 and <=11! This is needed for this package
$ brew tap AdoptOpenJDK/openjdk
$ brew cask install adoptopenjdk
$ brew cask install adoptopenjdk8
$ brew cask install adoptopenjdk11

# 現在の Java のバージョン
$ java --version  # 元々brew cask install java でインストールしていた Java
openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.2+12)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.2+12, mixed mode, sharing)

# ローカルにある Java のバージョン一覧
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    14.0.2, x86_64:  "AdoptOpenJDK 14"    /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home
    14, x86_64:    "OpenJDK 14" /Library/Java/JavaVirtualMachines/openjdk-14.jdk/Contents/Home
    11.0.8, x86_64:  "AdoptOpenJDK 11"    /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
    1.8.0_262, x86_64:    "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home
  • Rcmdr を動かすため,Java11 を指定する
    • .zshrc に以下を追加
# XX にバージョン番号を入れる
# export JAVA_HOME=`/usr/libexec/java_home -v XX`
export JAVA_HOME=`/usr/libexec/java_home -v 11`

シェルを再起動し Java のバージョンを確認.無事 Java 11 が指定されている.

$ java --version
openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.8+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.8+10, mixed mode)
  • 再度 Rcmdr を読み込む(エラー)
    • RStudio を再起動し,コンソールで library(Rcmdr) を実行.
    • 無事 X11 と RStudio(R)が接続できた.
    • しかし,以下のようなエラーウィンドウが出た.Rcmdr に必要なパッケージが足りないらしい.

f:id:pytwbf201830:20200722191635p:plain

  • 足りないパッケージをインストール
> BiocManager::install(c("sem", "rmarkdown", "rgl", "multcomp", "lmtest", "leaps", "aplpack"))
  • 再度 Rcmdr を読み込む(成功
    • エラーなく Rcmdr が起動した!(下記画像のような GUI 環境が起動する)
> library(Rcmdr)

f:id:pytwbf201830:20200722192354p:plain

補足:CRAN と Bioconductor

どちらも R のパッケージ提供サイト.PythonPyPI 的な位置付け.Bioconductor は,主に R でバイオ関連データを扱うためのパッケージを提供している.Bioconductor の使い方に関しては以下を参照.