R自学自習の基礎知識
初学者向け講義資料
- Rを用いたデータ解析の基礎 2024-04 東北大学
(学部3年生向け進化学実習の一部)
- 導入: データ解析の全体像。Rを使うメリット。Rの基本。
- データの可視化、レポート作成
- データ前処理: 抽出、集約、結合、変形
- 統計モデリング: 確率分布、尤度、一般化線形モデル
- Rを用いたデータ解析の基礎と応用
(石川由希 2024 名古屋大学):
初心者に寄り添ってさらに噛み砕いた説明。 実験生物学における「とにかくt検定」脱却を目指した統計解析パートも実践的で充実。 よくあるエラー集が特に重宝。
R環境のインストール
- R本体
- コマンドを解釈して実行するコア部分
- よく使われる関数なども標準パッケージとして同梱
- https://cloud.r-project.org/ からダウンロードしてインストール
- RStudio Desktop
- Rをより快適に使うための総合開発環境(IDE)
- 必須ではないけど、結構みんな使ってるらしい
- https://posit.co/download/rstudio-desktop/ からダウンロードしてインストール
スクリプトを保存
R のコンソールにコマンドを打ち込むと、即座に結果が返ってくる。
一度きりで済む短い処理ならそのように対話的な方法が分かりやすいかもしれないが、
別のデータにも使い回すとか、タイプミスでやり直すとか、
同じような処理を何度か繰り返す場合には(大抵はそうなる)、
一連の処理をまとめてスクリプト(テキストファイル)に書き出しておくとよい。
ファイルの拡張子は .txt
でも何でもいいが .R
にすることが多い。
Quarto を使えばコードと解析結果の図表を同時に保存・プレゼンすることができる。
パッケージ
便利な関数やサンプルデータなどをひとまとめにしたもの。 R開発チームが公式に作ってるものから、 ユーザーが自分用に作ってアップロードしたものまで、さまざまある。 自分でやろうとしてることは既に誰かがやってくれてる可能性が高いので、 車輪の再発明をする前に、まずは既存のパッケージを調べるべし。 プログラミングは、イチから「書く」のではなく、 既存のパーツを利用して「組む」感覚のほうが近い。
Standard Packages
https://stat.ethz.ch/R-manual/R-devel/doc/html/packages.html
R の標準機能。 何もしなくても使用可能な状態になっているので、 パッケージであることはあまり意識しなくてもいい。
base
c()
,data.frame()
,sum()
などホントに基本的なものgraphics
,grDevices
,grid
plot()
などグラフ描画関連stats
anova()
,glm()
,t.test()
など統計解析関連utils
help()
,install.packages()
,read.table()
など
ほかに
compiler
, datasets
, methods
, parallel
,
splines
, stats4
, tcltk
, tools
Recommended Packages
R と一緒にインストールされるが、
使用する前に library()
で呼び出しておく必要があるパッケージ。
例えば MASS
に入ってる stepAIC()
を使うには
stepAIC(model)
## Error: could not find function "stepAIC"
library(MASS)
stepAIC(model) # OK
ほかに
boot
, class
, cluster
, codetools
,
foreign
, KernSmooth
, lattice
, Matrix
,
mgcv
, nlme
, nnet
, rpart
, spatial
, survival
Contributed Packages
数千ものパッケージが有志により開発され、CRANにまとめて公開されている。
例えば https://posit.co/products/open-source/rpackages/ で紹介されているもの、特にHadley Wickhamらによる tidyverse パッケージ群 (ggplot2, dplyr, tidyr, purrr, readr, stringrなど) はどんな解析にも有用で、標準になってもいいくらい便利。 というより、tidyverseなき裸のRは使う気が起きない。 Rの中から下記のようなコマンドで一括インストール・読み込みできる。
install.packages("tidyverse") # 一度やればOK
library(conflicted) # 安全のおまじない
library(tidyverse) # 読み込みはRを起動するたびに必要
update.packages() # たまには更新しよう
そのほか https://cran.r-project.org/web/views/ で用途別に紹介されている。
パッケージを作るには devtools を使う。
作業ディレクトリ
Rではどこかのディレクトリ(=フォルダ)に身をおいて作業する。
データファイルを読み込むときなどに
Rがファイルを探すのはこの作業ディレクトリである。
No such file or directory
と怒られる場合は、
作業ディレクトリとファイルの場所が合っていないかったり、
ファイル名のタイプミスだったりすることが多い。
作業ディレクトリは解析の途中でホイホイ移動せず、 プロジェクトの最上階などに固定しておいて、 そこからの相対パスでファイルを読み書きするのが分かりやすくて安全。
getwd()
,setwd()
- 現在地 working directory をget/setする関数。
getwd() ## [1] /Users/watal setwd("~/Desktop") getwd() ## [1] /Users/watal/Desktop
list.files(path = ".", ...)
またはdir(path = ".", ...)
- ディレクトリ内のファイルを列挙する関数。
path を省略するとワーキングディレクトリが対象となる
read.table("mydata.txt", header = TRUE) ## Warning in file(file, "rt") : ## cannot open file 'mydata.txt': No such file or directory ## Error in file(file, "rt") : cannot open the connection list.files() ## [1] mydate.txt ファイル名が微妙に違う!!
R で調べる
help(topic, package = NULL, ...)
- ヘルプを表示する。
知りたいオブジェクトの先頭にクエスチョンマークを付けるという方法もある。
以下の2つは等価
help(sum) ?sum
help.start()
- 組み込みヘルプをブラウザで開く。 インストール済みパッケージのヘルプも Packages のリンクから見られる。
attributes(obj)
,str(obj)
- オブジェクトの属性や構造を調べる。
$names
に列挙されてる属性はダラー$
を挟んで取り出せるx = rnorm(100) y = rnorm(100) mymodel = lm(y ~ x) attributes(mymodel) ## $names ## [1] "coefficients" "residuals" "effects" "rank" ## [5] "fitted.values" "assign" "qr" "df.residual" ## [9] "xlevels" "call" "terms" "model" ## $class ## [1] "lm" mymodel$coefficients ## (Intercept) x ## -0.1494812 0.1218096 str(mymodel) ## List of 12 ## $ coefficients : Named num [1:2] -0.171 -0.198 ## ..- attr(*, "names")= chr [1:2] "(Intercept)" "x" ## $ residuals : Named num [1:100] -0.5143 -1.3148 0.1954 1.6039 -0.0875 ... ## ..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ... ## $ effects : Named num [1:100] 1.2027 2.0571 0.1179 1.8384 -0.0946 ... ## ..- attr(*, "names")= chr [1:100] "(Intercept)" "x" "" "" ...
インターネットで調べる・尋ねる
- r-wakalang — Slack上の日本語コミュニティ
- https://r4ds.hadley.nz/ — R for Data Science (体系的に学びたい人はぜひ通読を)
- https://www.rdocumentation.org/ — 各パッケージの公式ドキュメントを閲覧
- Stack Overflow
データ読み込み
See readr.
データ処理・整形
グラフ作図
2D: See ggplot2.
3D: See rgl.
関連書籍
Rのモダンな使い方、考え方を学ぶにはr4ds。
まずは公開オンライン版を読んでみて。