R3.6 から R4.1 + c2d4u への移行を検討してみた

私の PC(Ubuntu20.04-x64) には R3.6.3 がインストールされているんですが、パッケージをインストールする際にコンパイルするため、やたらと時間がかかるものがあるあたりはまだ良いんですが、コンパイルに失敗するものも稀にあったりします。そんなときに思うのは、

Windows の R だったらバイナリがインストールできるから、こうゆうことはないんだろうな…、、、って。

うん？そういえば R のページで 4.1 のインストール方法に加えて、 "c2d4u" のインストールが紹介されていたな。ちょっと試して見ようかなと。

## c2d4uってなに？
よく分かっていないんですが、通常 "R" でパッケージをインストールする場合は、 R 上で`install.packages()` を使うんですが、 c2d4u をリポジトリに追加すれば `sudo apt install r-cran-****` という感じで apt コマンドでコンパイル済みの R のパッケージをインストールできるみたいです。

## まずは R4.1のインストール
https://cran.r-project.org/bin/linux/ubuntu/ にアクセスするとインストール方法が書いてあるのでそれに従ってインストールを行います。

```bash:Rのインストール（コンソール）
sudo apt update -qq
sudo apt install --no-install-recommends software-properties-common dirmngr
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"

sudo apt update
sudo apt install --no-install-recommends r-base
```

R のバージョンが 4 系になっていることを確認します。

```bash:Rのバージョンを確認（コンソール）（実行結果）
$ R --version
R version 4.1.1 (2021-08-10) -- "Kick Things"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
https://www.gnu.org/licenses/.
```

## c2d4u のインストール
これも書いてあるのを参考にインストールします。

```bash:c2d4uのインストール（コンソール）
sudo add-apt-repository ppa:c2d4u.team/c2d4u4.0+
sudo apt update
```

## c2d4u を試してみる
試してみたいと思います。まずは tidyverse をインストールしてみます。依存するライブラリが多いので大丈夫かなと思ったんですが、無事インストールされました。

```bash:tidyverse（コンソール）
sudo apt -y install --no-install-recommends r-cran-tidyverse
```

本当に使えるかためしてみます。

```R:dplyr（R）（実行結果）
> library(dplyr)
> c("hello","world") %>% stringr::str_flatten(", ")
[1] "hello, world"
```

確かに使えるようです。

## もうちょっと試してみる①
以前「Rコマンダー」を試そうとおもったら結構時間かかった記憶があるので改めて試してみます。`sudo apt install r-cran-rcmdr` を実行してみたところインストールはさくっとできました。

で、 R を起動して `library(Rcmdr)` としてみたところ、以下のようなエラーが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128670/9b3a8ab1-7180-3132-be34-5266279a536a.png)
ここで「Yes」とすると当然ですが R のパッケージをインストールになってしまいます。さらに r-base をインストールする際に --no-install-recommends を指定したためかコンパイラ関係がインストールされていないみたいで make がないみたいなエラーになってしまいます。

ないって言われているライブラリを apt でインストールしようと思ったんですが、エラーダイアログの文字列がコピペできず。

なら手打ちしたらいいと思うんですが、それは最終手段ということで、まずはコピペできる方法ないかと探してみたんですが見つからず。

仕方ないからスクリーンショットとって `tesseract -l eng` で OCR 処理して `sudo apt install r-cran-sem r-cran-rgl r-cran-multcomp r-cran-markdown r-cran-lmtest r-cran-leaps` を実行しました。

でもって再度実行してみたところエラーはでなくなりました。

メッセージボックス中のコピーできないテキストのコピーと、スクリーンショット＆OCR を簡単にできる方法は今後の課題にしようかなと思います。

## もうちょっと試してみる②
以前インストールに失敗した記憶のある https://rpubs.com/heruwiryanto/Causal_impact で紹介されている CausalImpact で試してみたいと思います。

`apt search CausalImpact` としてみると発見できません、つまり登録されていないようです。 CausalImpact は無理そうなんですが依存しているライブラリはインストールできるかもということで、 R のパッケージと c2d4u を組み合わせてできるのか試してみたいと思います。

まずは CausalImpact の依存関係を調べます。

```R:CausalImpactの依存関係を調べる（R）（実行結果）
> tools::package_dependencies(packages = "CausalImpact")
$CausalImpact
[1] "bsts"       "assertthat" "Boom"       "dplyr"      "ggplot2"   
[6] "zoo"       
```
でもってその依存するパッケージを R からではなく `apt` コマンドからインストールします。

```bash:CausalImpactの依存パッケージをインストール（コンソール）
sudo apt install --no-install-recommends r-cran-bsts r-cran-assertthat r-cran-boom r-cran-dplyr r-cran-ggplot2 r-cran-zoo
```

無事にインストールできたら CausalImpact をインストールしてみます。

```R:CausalImpactのインストール（R）
install.packages("CausalImpact")
```

あっけなくインストールできました。コンパイルが必要ないということは R だけで作られているってことなんでしょうか。

恐る恐るサンプルを試してみたところ、あっけなく実行できました。

## ま、こんなところじゃないでしょうか
私のスキル不足もあってか、すべてがまるっとはいきませんでしたが、それなりに楽しかったので良しとしておきましょう。

ただ c2d4u への移行はもうちょっと後にしようかなと思っています。