準備編

まずは今回の統計で用いるR言語が動くようにソフトウェアやパッケージのインストールを行う。
このようなプログラミング言語を使って説明する場合には、通常パッケージなどを使わずに直接開発すること(スクラッチ開発)をすることできちんとした理解をすることが好ましいが、本書の読者はプロのデータサイエンティストではない。
このため本書では積極的にパッケージを活用していく方針としていく。
またうまくいかない場合は、出てきたエラーを直接ChatGPTなどの大規模言語モデルを用いた対話型AIサービスに入れることで解決策を得ることができるため、ぜひ活用していただきたい。

Rのインストール

まずGoogleの検索欄にRと打ち込んで以下のページをクリックする。

続いて真ん中のdownloa Rをクリックする。

CRAN Mirrorという変なページへ飛ばされるが、慌てずに下へスクロースしていく。

今自分が一番近い場所を選ぶ。
通常であればJapanの場所を選べばOK

Download and Install Rのページに飛ぶので自身のOSにあったものを選んでクリック。

筆者はWindowsなので、R for Windowsのページに飛ぶことになる。
ここでbaseをクリックしてRの基礎ソフトダウンロードページへ飛ぶ。

Download R-4.4.1 for Windowsをクリックしてダウンロード。
これによってRのバージョン4.4.1がダウンロードされる。
Rはどんどん開発が進んでおり、バージョンによっては入れられないパッケージなどがあるため、自身のバージョン情報を知っておく。
後述するが、Rのコマンド上で確認できるため、メモを取る必要は無い。
ダウンロードできたら、クリックしてインストールを行う。
この際に日本語を選択することができる。
初心者は心理的ハードルが下がるため、日本語にしておくほうが良い。

個人的な余談:OSについて(WindowsとMac)

Rをインストールして動かすという一点を考えるならばWindowsの方が楽である。
これは設計思想の違いであり、Windowsは過去に使えていたソフトを極力新しいOSでも動くように環境を整えており、反対にMacは不要となったものをどんどん削除して、自身が提供するベストな環境で動かすことを前提としている。このためMacでは古いソフトが削除されたために、Rの特定のパッケージが動かなくなるということをよく経験する。
またユーザーの多さから、エラーが発生した際もWindows環境の方がネット上に解決策が提示されていることが多い。
このため自身がWindowsユーザーであれば無理に別のパソコンを用意する必要は無い。

Rstudioのインストール

RstudioはR言語専用の統合開発環境であり、必須のソフトではないが、操作が楽になるため、インストールすることをお勧めする。
Rと同じようにGoogleの検索でRstudioと入力する。

ページが表示されたら下の方へスクロースする。

そうしたら2: Install RStudioの下にあるDownload RStudio Desktop for windowsと書かれた青いバーをクリックする。

ソフトのダウンロードが開始されるので、完了したらクリックしてインストール。
もし以下のような警告が出た場合は最新版がインストールされている。

Rstudioの起動

英語だがそれを上回るメリットがあるので、怯えずに使っていただきたい。
まず環境を整える。メニューバーの下に4つ窓マークのWorkspace Panesがあるので、そこをクリックする。

するとRstudio上の画面をどのように分割するかが表示されるので、Show All PanesとConsole on Rightを選択する。
(もしパソコンの画面が小さい方はConsole on Leftでもよい)

続いて一番左の+マークに白いドキュメントのボタンがあるのでそこをクリックする。

そうするとメニューが表示されるので、R Scriptをクリックする。

これでR言語を動かすことができるようになる。
中身としては以下のようになっている。
 左上:スクリプトを書く場所(ソース)
 右上:スクリプトの実行を行う場所(コンソール)
 左下:現在の環境で読み込まれている情報(環境情報)
 右下:現在のディレクトリにおけるファイル情報など(ファイル情報)
上部のタブを押すと他の機能が表示されるので、適宜切り替えてほしい。

文字が小さくて見づらい人はメニューバーのViewタブからZoom Inを押すと拡大できる

Rstudioの超基本的な使い方

ここからR言語を使っていくが、プログラミングと身構えなくてよい。
R言語とは突き詰めていってしまえば優秀な電卓である。
なのでまずは電卓としての機能を使いながら、R言語へ慣れていく。
尚、ここから何度もR言語と書くと面倒なため、Rと呼ぶことをにする。
まずは以下のコマンドを左上のソース枠に記入してほしい。

2+3
4*5
6/7

その後一番上の行にカーソルを移してRunボタンかCtrl + Enterを押すとコンソール枠に結果が表示される。
以降を繰り返していくと、各計算結果が表示される。

このように
Rとは計算に特化し、かつ対話的に扱えるプログラミング言語であり、1行ずつ結果を得ることができる。
このようなプログラミング言語をインタプリタ型と呼ぶ。
以降は左右に表示した画像は見づらいため、コードを実行結果を以下のように示す。

2+3
## [1] 5
4*5
## [1] 20
6/7
## [1] 0.8571429

解析で使うパッケージのインストール

R上は様々な計算が行えるが、これは様々な人が目的とする計算ができるようにプログラムを作っている。
これを他の人が再利用できるようにしたものがパッケージである。
パッケージのインストールには様々な方法があるが、2024年9月26日現在は以下の方法が推奨されている。
まず、インストールを支援してくれるBiocManagerパッケージをインストールする。

## BiocManagerパッケージが入っているか確認
if (!require("BiocManager", quietly = TRUE))
  #無い場合にはBiocManagerをインストール
  install.packages("BiocManager")
## Warning: パッケージ 'BiocManager' はバージョン 4.2.3 の R の下で造られました
## Bioconductor version '3.16' is out-of-date; the current release version '3.19'
##   is available with R version '4.4'; see https://bioconductor.org/install

これが終わったのちに以下のコマンドを実行する。

## インストールするパッケージの一覧を作成
install_files = c("MASS","ggplot2" ,"exactRankTests" ,"survival", 
                  "survminer", "nnet", "ggdendro", "ComplexHeatmap", "circlize")
## このパッケージ一覧をインストールするコマンド
BiocManager::install(install_files, force = TRUE)
## Bioconductor version 3.16 (BiocManager 1.30.22), R 4.2.1 (2022-06-23 ucrt)
## Installing package(s) 'MASS', 'ggplot2', 'exactRankTests', 'survival',
##   'survminer', 'nnet', 'ggdendro', 'ComplexHeatmap', 'circlize'
## Warning: package 'MASS' is not available for Bioconductor version '3.16'
## 
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## 
##   利用できるバイナリー版がありますがソース版は後者です:
##          binary source needs_compilation
## survival  3.6-4  3.7-0              TRUE
## 
##  パッケージ 'ggplot2' は無事に展開され、MD5 サムもチェックされました 
##  パッケージ 'exactRankTests' は無事に展開され、MD5 サムもチェックされました 
##  パッケージ 'survminer' は無事に展開され、MD5 サムもチェックされました 
##  パッケージ 'nnet' は無事に展開され、MD5 サムもチェックされました
## Warning: パッケージ 'nnet' の既存のインストールを取り除くことが出来ませんでした
## Warning in file.copy(savedcopy, lib, recursive = TRUE):
## C:\Users\mokim\AppData\Local\R\win-library\4.2\00LOCK\nnet\libs\x64\nnet.dll の
## C:\Users\mokim\AppData\Local\R\win-library\4.2\nnet\libs\x64\nnet.dll
## へのコピーに問題があります: Permission denied
## Warning: 'nnet' を復帰させました
##  パッケージ 'ggdendro' は無事に展開され、MD5 サムもチェックされました 
##  パッケージ 'ComplexHeatmap' は無事に展開され、MD5 サムもチェックされました 
##  パッケージ 'circlize' は無事に展開され、MD5 サムもチェックされました 
## 
##  ダウンロードされたパッケージは、以下にあります 
##      C:\Users\mokim\AppData\Local\Temp\RtmpKOWGjV\downloaded_packages
##  ソースパッケージ 'survival' をインストール中です
## Installation paths not writeable, unable to update packages
##   path: C:/Program Files/R/R-4.2.1/library
##   packages:
##     boot, class, codetools, KernSmooth, lattice, nnet, spatial, survival
## Old packages: 'abind', 'ape', 'aplot', 'backports', 'BH', 'BiocManager', 'bit',
##   'bit64', 'bitops', 'brio', 'broom', 'bslib', 'cachem', 'callr', 'car',
##   'caTools', 'cli', 'cluster', 'colorspace', 'commonmark', 'corrplot',
##   'cowplot', 'cpp11', 'crayon', 'crosstalk', 'curl', 'data.table', 'data.tree',
##   'DBI', 'dbplyr', 'deldir', 'digest', 'dplyr', 'dqrng', 'DT', 'e1071',
##   'evaluate', 'fansi', 'farver', 'fastmap', 'filelock', 'fitdistrplus', 'FNN',
##   'foreign', 'fs', 'future', 'future.apply', 'ggforce', 'ggfun', 'ggnewscale',
##   'ggraph', 'ggrepel', 'ggridges', 'ggsci', 'ggupset', 'globals', 'glue',
##   'gplots', 'graphlayouts', 'gtable', 'gtools', 'haven', 'highr', 'htmltools',
##   'htmlwidgets', 'httpuv', 'igraph', 'jsonlite', 'knitr', 'later', 'leaps',
##   'leiden', 'lifecycle', 'limSolve', 'listenv', 'lme4', 'locfit', 'lpSolve',
##   'markdown', 'matrixStats', 'mgcv', 'minqa', 'munsell', 'mvtnorm', 'nlme',
##   'nloptr', 'openssl', 'parallelly', 'patchwork', 'pbkrtest', 'pkgbuild',
##   'pkgload', 'plotly', 'polyclip', 'pracma', 'processx', 'progress',
##   'promises', 'ps', 'quantreg', 'R.oo', 'R.utils', 'ragg', 'RANN', 'Rcpp',
##   'RcppAnnoy', 'RcppArmadillo', 'RcppEigen', 'RcppHNSW', 'RCurl', 'readr',
##   'remotes', 'reprex', 'reticulate', 'rjson', 'rlang', 'rmarkdown', 'rpart',
##   'rprojroot', 'RSQLite', 'rstudioapi', 'Rtsne', 'rvest', 'sass', 'scatterpie',
##   'sctransform', 'Seurat', 'SeuratObject', 'shadowtext', 'shape', 'shiny',
##   'sp', 'SparseM', 'spatstat.data', 'spatstat.explore', 'spatstat.geom',
##   'spatstat.random', 'spatstat.sparse', 'spatstat.utils', 'stringi', 'stringr',
##   'systemfonts', 'testthat', 'textshaping', 'tidygraph', 'tidyr', 'tidyselect',
##   'tidytree', 'timechange', 'tinytex', 'tweenr', 'utf8', 'uuid', 'uwot',
##   'vctrs', 'viridis', 'vroom', 'waldo', 'withr', 'xfun', 'XML', 'xml2', 'yaml',
##   'yulab.utils'

以下のようなポップアップ表示が出てきたらひとまずはい(Y)で良い。

また既にパッケージがインストールされている場合は以下のように問われる場合があるが、コンソール枠側にひとまずnを入力しEnterを押しておく。

これは関連するパッケージをアップデートするかを聞かれているが、allを押すと時間がかかるため、省略している。
そのままで動くことが多いため、エラーが出た際にアップデートを検討することが多い。
続いて実際のパッケージが動くか検討する

## パッケージを呼び出すコマンド
library(MASS)
## Warning: パッケージ 'MASS' はバージョン 4.2.3 の R の下で造られました
library(ggplot2)
## Warning: パッケージ 'ggplot2' はバージョン 4.2.3 の R の下で造られました
library(exactRankTests)
## Warning: パッケージ 'exactRankTests' はバージョン 4.2.3 の R の下で造られました
##  Package 'exactRankTests' is no longer under development.
##  Please consider using package 'coin' instead.
library(survival)
library(survminer)
## Warning: パッケージ 'survminer' はバージョン 4.2.3 の R の下で造られました
##  要求されたパッケージ ggpubr をロード中です
## Warning: パッケージ 'ggpubr' はバージョン 4.2.3 の R の下で造られました
## 
##  次のパッケージを付け加えます: 'survminer'
##  以下のオブジェクトは 'package:survival' からマスクされています:
## 
##     myeloma
library(nnet)
## Warning: パッケージ 'nnet' はバージョン 4.2.3 の R の下で造られました
library(ggdendro)
## Warning: パッケージ 'ggdendro' はバージョン 4.2.3 の R の下で造られました
library(ComplexHeatmap)
##  要求されたパッケージ grid をロード中です
## ========================================
## ComplexHeatmap version 2.14.0
## Bioconductor page: http://bioconductor.org/packages/ComplexHeatmap/
## Github page: https://github.com/jokergoo/ComplexHeatmap
## Documentation: http://jokergoo.github.io/ComplexHeatmap-reference
## 
## If you use it in published research, please cite either one:
## - Gu, Z. Complex Heatmap Visualization. iMeta 2022.
## - Gu, Z. Complex heatmaps reveal patterns and correlations in multidimensional 
##     genomic data. Bioinformatics 2016.
## 
## 
## The new InteractiveComplexHeatmap package can directly export static 
## complex heatmaps into an interactive Shiny app with zero effort. Have a try!
## 
## This message can be suppressed by:
##   suppressPackageStartupMessages(library(ComplexHeatmap))
## ========================================
library(circlize)
## Warning: パッケージ 'circlize' はバージョン 4.2.3 の R の下で造られました
## ========================================
## circlize version 0.4.16
## CRAN page: https://cran.r-project.org/package=circlize
## Github page: https://github.com/jokergoo/circlize
## Documentation: https://jokergoo.github.io/circlize_book/book/
## 
## If you use it in published research, please cite:
## Gu, Z. circlize implements and enhances circular visualization
##   in R. Bioinformatics 2014.
## 
## This message can be suppressed by:
##   suppressPackageStartupMessages(library(circlize))
## ========================================

色々と警告が出てくる場合があるが、2回目実行してその警告が表示されなければ読み込めている。
読み込んだパッケージに応じた計算が各種使えるようになり、その使い方は以下のコマンドで見ることができる。

## survivalパッケージ生存時間解析を行うコマンド(=関数)survfitの使い方を表示するコマンド
?survfit
##  httpd ヘルプサーバーを起動...   完了

解析したRの情報を表示する

Rやパッケージのバージョン情報を確認したいときに以下のコマンドを使用する。
基本的に解析が終わったらこの情報を保存しておく癖をつけておく必要がある。
これはバージョンによって結果が変わってしまうことがあるためである。
筆者は諸般の事情でR 4.2.1を使用しているため、読者の皆様とは違った情報が表示されている。

sessionInfo()
## R version 4.2.1 (2022-06-23 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19045)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=Japanese_Japan.utf8  LC_CTYPE=Japanese_Japan.utf8   
## [3] LC_MONETARY=Japanese_Japan.utf8 LC_NUMERIC=C                   
## [5] LC_TIME=Japanese_Japan.utf8    
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] circlize_0.4.16       ComplexHeatmap_2.14.0 ggdendro_0.2.0       
##  [4] nnet_7.3-19           survminer_0.4.9       ggpubr_0.6.0         
##  [7] survival_3.7-0        exactRankTests_0.8-35 ggplot2_3.5.1        
## [10] MASS_7.3-60           BiocManager_1.30.22  
## 
## loaded via a namespace (and not attached):
##  [1] sass_0.4.7          tidyr_1.3.0         jsonlite_1.8.7     
##  [4] splines_4.2.1       foreach_1.5.2       carData_3.0-5      
##  [7] bslib_0.5.1         stats4_4.2.1        yaml_2.3.7         
## [10] pillar_1.9.0        backports_1.4.1     lattice_0.20-45    
## [13] glue_1.6.2          digest_0.6.33       RColorBrewer_1.1-3 
## [16] ggsignif_0.6.4      colorspace_2.1-0    htmltools_0.5.6    
## [19] Matrix_1.6-1.1      pkgconfig_2.0.3     GetoptLong_1.0.5   
## [22] broom_1.0.5         purrr_1.0.2         xtable_1.8-4       
## [25] scales_1.3.0        km.ci_0.5-6         KMsurv_0.1-5       
## [28] tibble_3.2.1        generics_0.1.3      IRanges_2.32.0     
## [31] car_3.1-2           cachem_1.0.8        withr_2.5.1        
## [34] BiocGenerics_0.44.0 cli_3.6.1           magrittr_2.0.3     
## [37] crayon_1.5.2        evaluate_0.22       fansi_1.0.4        
## [40] doParallel_1.0.17   rstatix_0.7.2       tools_4.2.1        
## [43] data.table_1.14.8   GlobalOptions_0.1.2 lifecycle_1.0.3    
## [46] matrixStats_1.0.0   S4Vectors_0.36.2    munsell_0.5.0      
## [49] cluster_2.1.4       compiler_4.2.1      jquerylib_0.1.4    
## [52] rlang_1.1.1         iterators_1.0.14    rstudioapi_0.15.0  
## [55] rjson_0.2.21        rmarkdown_2.25      gtable_0.3.4       
## [58] codetools_0.2-18    abind_1.4-5         R6_2.5.1           
## [61] gridExtra_2.3       zoo_1.8-12          knitr_1.44         
## [64] dplyr_1.1.3         fastmap_1.1.1       survMisc_0.5.6     
## [67] utf8_1.2.3          clue_0.3-65         shape_1.4.6        
## [70] parallel_4.2.1      vctrs_0.6.3         png_0.1-8          
## [73] tidyselect_1.2.0    xfun_0.40