Rでの分析環境構築

猫も杓子もPython．今更Rはオワコンかもしれないけど，気軽に計算できる環境としてはやっぱりRは便利ですね．
Rを使ってRStudio上でのRmarkdownの作成と，いくつかのパッケージ（RCommander（オワコンかもしれないけど）, tidyverse)のインストールまでできるようなものを書きます．

というのも，最近Windows10で問題が起こりぎみでそれについてうまい解決例までが示された記事が（私が探した限りでは）なかったということで，ある程度ととのえたものを書いておこうという気持ちです．

検証したバージョン

* R (3.6.2)
* RStudio (1.2.5003)

---

* R 4.0.0 での検証については下の方にメモしてあります．
* 2022年4月にR4.2.0がリリースされたことにより，OneDriveやらの問題は解消されているようです．
    * RStudioとの組み合わせで，中身がちゃんとあるスクリプトを開いても空の表示がなされてしまう問題が確認できました．
    * reopen with encoding... でUTF-8にして開き直すと解決できました．

---
# Windowsでの環境構築
Windowsでの環境構築はすこしややこしいので前準備が大切です．

* 今回検証したWindowsバージョン: Windows 10 Pro バージョン1909

## 0. 前準備
いずれも同じようなトラブルですが，以下のような場合にはトラブルが発生する恐れがあります．
以下2つのいずれかに当てはまる場合には別途準備が必要です．

### OneDriveとの連携をしている場合

* 発生しうる問題：パッケージインストールを行う際にインストール先ディレクトリを作成できないというようなエラーが発生する．

<!--<img width="481" alt="現状-2.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/71b992ec-4617-c525-d9b6-93dcb79123fd.png">-->


#### 確認方法

1. 下図の１〜３の順番にOneDriveの設定を開く．
タスクバーのOneDriveアイコン＞その他＞設定
<img width="549" alt="スクリーンショット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/d2345f58-85d0-817d-85bd-095db8c7a68c.png">

2. 下図のとおり「バックアップ」タブの「バックアップを管理」を開く
<img width="369" alt="スクリーンショット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/3ac6694b-90d0-ec22-eb8a-be4bfefec3d5.png">

3. 設定画面のドキュメント部分を確認して
「**ファイルはバックアップされました**」と書いてあればOneDriveと連携されている．
<img width="527" alt="スクリーンショット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/0c13ea47-1530-d054-c034-b5e6b09c0824.png">

#### 解決方法
##### 解決方法1
一番単純な方法（OneDriveバックアップ機能を用いていないのであればおすすめ）

ドキュメントのバックアップをやめる
「バックアップの停止」をクリックしてOneDriveとの連携を解除
<img width="527" alt="スクリーンショット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/1bb718e3-9441-69d7-feb4-5885a2423561.png">


##### 解決方法2
Rを管理者権限にて実行

パッケージをインストールする際に管理者権限でRStudioを起動すれば良い．
PCのユーザ全員のRに影響を与えてしまうので，それをわかった上で実行する必要がある．
<img width="564" alt="スクリーンショット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/252401b5-929c-f25b-d2cd-9f27038adae1.png">


##### 解決方法3
~~環境変数`R_LIBS_USER`に場所を記述~~  
環境変数`R_USER`, `HOME`の場所を指定し直す
（OneDriveバックアップに対応したまま使うことができるが，今後のバージョンアップなどでどうなるかわからないので，これをやるときは注意，そして，環境変数`HOME`を追加するので，他のプログラムに影響を及ぼす可能性があるので注意．）

これは管理者権限を持っていなくてもどうにかできる．

1. ドキュメントフォルダの中にパッケージインストール場所を作成する．  
`C:/ユーザー/[ユーザ名]/Documents`というフォルダの中に「R」という空フォルダを作り，「R」フォルダの中に「win-library」というからフォルダを作る．
作ったフォルダのpathが`C:/ユーザー/[ユーザ名]/Documents/R/win-library`であれば良い．
<img width="695" alt="スクリーンショット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/2a013cd0-0f3c-d291-55d4-cad7a860fec4.png">

2. 「システム環境変数の編集」を開く  
スタートメニューで`path`と検索すれば出てくる．
<img width="707" alt="スクリーンショット" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/d79b2aec-a1a7-3110-6bb1-51646e58fe59.png">

3. 環境変数を開く  

4. ~~ユーザ環境変数に「`R_LIBS_USER`」を追加~~  
ユーザ環境変数に「`HOME`」「`R_USER`」を追加
「新規」を押して，変数名に「`R_LIBS_USER`」，変数値に上で作成したフォルダのパスを記入してOKを押す．

`HOME`, `R_USER`は両方とも
```
C:\Users\[Username]\Documents
```
に指定すればよい．

![スクリーンショット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/c36fd5f7-49d5-c803-d662-af9bec6aedd2.png)

Rで次のコマンドを用いることで設定を確認可能．
```
Sys.getenv()
```


[この解決法の参考ページ](https://nigimitama.hatenablog.jp/entry/2018/10/22/013456)
[管理者権限のないユーザで環境変数を変更する方法](https://did2memo.net/2017/03/15/windows-set-environment-variables-without-admin-auth/)


### 日本語のユーザ名で使っている場合

* 発生しうる問題：RStudioが立ち上がらない

Microsoftアカウントでログインしている場合，問題はないが，オフラインアカウントを使っている場合には問題が発生することがある．

#### 確認方法
設定＞アカウントを開く

ユーザの情報のアイコンの下が「てすとゆーざ」のように日本語表記されている場合は，ユーザ名が日本語（雑な仮想環境を用意しているので，ライセンス認証していない）

<img width="706" alt="スクリーンショット 2020-02-23 16.05.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/a1bad6b0-b2d5-ecd1-7b0f-98f4b89f0d70.png">

ほかには，デスクトップにできてるショートカットのプロパティを見るところからでも確認できる．
<img width="323" alt="スクリーンショット 2020-02-23 20.08.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/b00f4276-c809-17f4-91e1-276d488af96c.png">

こんなように日本語を含んでいるとうまくいかない．

#### 解決方法

RStudioを利用するために新規ユーザを作成する．
[Windows 10 でローカルのユーザー アカウントまたは管理者アカウントを作成する](
https://support.microsoft.com/ja-jp/help/4026923/windows-10-create-a-local-user-or-administrator-account)のページの「ローカル ユーザー アカウントを作成する」を参考に，日本語を含まないユーザーを作成し，そのユーザーアカウントを使ってRStudioを利用しましょう．

## 1. R, RStudioのインストール
下記のリンクからダウンロードをし，基本的には初期設定のままインストールすれば良い．

* R
    * こちらの[リンク](https://cran.ism.ac.jp/bin/windows/base/)からダウンロード
* R tools
    * こちらの[リンク](https://cran.ism.ac.jp/bin/windows/Rtools/)からダウンロード
    * R toolsはrecommendedをインストールすれば良い．
* RStudio
    * こちらの[リンク](https://rstudio.com/products/rstudio/)からダウンロード
    * Windows版を選択してダウンロードする．

## 2. RMarkdownの作成

RStudioのファイルメニューから
File>New>R Notebookを開く．
![スクリーンショット 2020-02-23 23.55.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/f71f43eb-2937-939b-851b-69936849549b.png)

初回はパッケージのインストールに関するダイアログが出るのでYesを押してインストールする．
![スクリーンショット 2020-02-23 23.55.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/6d049339-d1ac-4998-02dc-6d2094d22c68.png)

するとインストールが始まる．
![スクリーンショット 2020-02-23 23.55.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/b8de2e3e-2a22-f848-b805-17b7af072cee.png)

インストールが完了したらRmdファイルが作成されるので，画面上のknitボタンを押してknitする．
うまくいけばR/RStudioは適切にインストールされているはず．


## 3. RCmdr, tidyverseのインストール
RStudioをを起動してコンソール画面に下記のコマンドを実行する．


### RCommanderのインストール 
RCommanderのインストールは次のコマンドを実行すれば良い．
一部のパッケージはソースからインストールするか聞かれるが，Noと答えれば良い．

```{r}
install.packages("Rcmdr", dep=T)
```

### tidyverseのインストール
tidyverseのインストールは次のコマンドを実行すれば良い．
一部のパッケージはソースからインストールするか聞かれるが，Noと答えれば良い．

```{r}
install.packages("tidyverse", dep=T)
```

---
# Macでの環境構築
Macでのインストールではそんなにトラブルがないはずです．
次のように順を追ってインストールしていけば問題なく環境の構築はできると思います．
ただ，日本語を含むグラフのプロットは少し曲者です．

## 1. R, RStudioのインストール

* Xquartz
    * こちらの[リンク](https://www.xquartz.org)からダウンロード
* R
    * こちらの[リンク](https://cran.ism.ac.jp/bin/macosx/)からダウンロード
* R tools
    * こちらの[リンク](https://cran.ism.ac.jp/bin/macosx/tools/)からダウンロード

## 2. RMarkdownの作成

Windowsと同じようにFile>New>R Markdown...を開くとしていけばよい．
<img width="496" alt="スクリーンショット 2020-03-06 14.23.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/776434b3-e627-5b31-8f51-898a65e91b88.png">


## 3. RCmdr, tidyverseのインストール
RStudioをを起動してコンソール画面に下記のコマンドを実行する．

### RCommanderのインストール 
RCommanderのインストールは次のコマンドを実行すれば良い．
一部のパッケージはソースからインストールするか聞かれるが，Noと答えれば良い．

```{r}
install.packages("Rcmdr", dep=T)
```

### tidyverseのインストール
tidyverseのインストールは次のコマンドを実行すれば良い．
一部のパッケージはソースからインストールするか聞かれるが，Noと答えれば良い．

```{r}
install.packages("tidyverse", dep=T)
```

## A. 付録
### plotの文字が豆腐になる
plotの日本語がうまく出ないという問題です．この問題は`.Rprofile`の設定が適切でないために発生します．

例えば，下の画像のようになってしまいます．
<img width="1008" alt="スクリーンショット 2020-04-11 16.42.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/5ba5aed7-a450-894f-b21b-b89621c5ef78.png">


- `.Rprofile`を作成しましょう．
- 以下のようなファイルを作成してホームディレクトリ(`~`)の直下に`.Rprofile`という名前で保存する．


`.Rprofile`の中身は以下のとおり．

```{r}
setHook(packageEvent("grDevices", "onLoad"),
        function(...){
        if(.Platform$OS.type == "windows")
            grDevices::windowsFonts(sans ="MS Gothic",
                                    serif="MS Mincho",
                                    mono ="FixedFont")
        if(capabilities("aqua"))
            grDevices::quartzFonts(
              sans =grDevices::quartzFont(
                c("Hiragino Kaku Gothic Pro W3",
                  "Hiragino Kaku Gothic Pro W6",
                  "Hiragino Kaku Gothic Pro W3",
                  "Hiragino Kaku Gothic Pro W6")),
              serif=grDevices::quartzFont(
                c("Hiragino Mincho Pro W3",
                  "Hiragino Mincho Pro W6",
                  "Hiragino Mincho Pro W3",
                  "Hiragino Mincho Pro W6")))
        if(capabilities("X11"))
            grDevices::X11.options(
                fonts=c("-kochi-gothic-%s-%s-*-*-%d-*-*-*-*-*-*-*",
                        "-adobe-symbol-medium-r-*-*-%d-*-*-*-*-*-*-*"))
        grDevices::pdf.options(family="Japan1GothicBBB")
        grDevices::ps.options(family="Japan1GothicBBB")
        }
)

attach(NULL, name = "JapanEnv")
assign("familyset_hook",
       function() {
            winfontdevs=c("windows","win.metafile",
                          "png","bmp","jpeg","tiff","RStudioGD")
            macfontdevs=c("quartz","quartz_off_screen","RStudioGD")
            devname=strsplit(names(dev.cur()),":")[[1L]][1]
            if ((.Platform$OS.type == "windows") &&
                (devname %in% winfontdevs))
                    par(family="sans")
            if (capabilities("aqua") &&
                devname %in% macfontdevs)
                    par(family="sans")
       },
       pos="JapanEnv")
setHook("plot.new", get("familyset_hook", pos="JapanEnv"))
setHook("persp", get("familyset_hook", pos="JapanEnv"))
```

### CSVファイルの読み込み
`read.csv()`関数でCSVファイルを読み込む場合は`fileencoding`オプションにて`fileencoding="sjis"`のように指定すれば良い

### Rdataファイルについて
sjis環境で作成されたRdataファイルは中に日本語を含んでいると文字化けする．
詳しくは[この記事](https://qiita.com/mokab/items/338638a24768d9a0c5ec)を参照のこと．


---
# R 4.0.0がリリースされた

R 4.0.0だと，Personal Libraryのデフォルトが次のようになっているため，OneDriveの同期のエラーは発生しませんでした．
![スクリーンショット 2020-04-25 5.33.25 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62741/f0d800f2-317b-8a5e-591a-ee0bfc9e4f2e.png)

旧バージョンのRは次のリンクからダウンロード可能です．
Windows
https://cran.r-project.org/bin/windows/base/old/

Mac OS
https://cran.r-project.org/bin/macosx/el-capitan/base/


---
# Windows 11でうまく描画がされない

下記のリンクの通りに描画方法を変更するとうまくいくらしい．

https://community.rstudio.com/t/rstudio-not-responding-on-windows-11/127946/2