R ドキュメント
簡潔で実例中心の R リファレンス。概念を読み、コードを見て、Coddy のジャーニーで実践しましょう。
はじめに
- R言語とは?R言語とは何か、どこから生まれ、何に使われ、Pythonとどう違うのか。実際に動かせる最初のRコードとあわせて解説します。
- RのインストールCRANからRをダウンロードしてWindows・macOS・Linuxにインストールする手順と、ほぼ全員が使うIDEであるRStudioの導入方法を解説します。
- Rスクリプトの実行Rコードを実行するあらゆる方法:対話型コンソール、コマンドラインのRscript、R内部からのsource()、そしてRStudioのRunとSourceを解説します。
- Rの文法Rの文法の核心:<- による代入、式と自動表示、名前付き引数を使った関数呼び出し、そして「すべてがベクトル」という原則を解説します。
- コメントRにおけるコメントの仕組み:# 記号、Rに真の複数行コメントがない理由、ブロックをコメントアウトするRStudioのショートカット、そして良いコメントが伝えるべきこと。
変数とデータ
- 変数R で <- を使って変数を作る方法、代わりに = が必要になる場面、名前の規則、そして ls() と rm() による変数の一覧表示と削除を解説します。
- データ型Rの原子的なデータ型(double・integer・character・logical)と、typeof() と class() の違い、そして型変換と暗黙の型強制の仕組みを解説します。
- 数値Rで数値を扱う:numericとintegerの違い、丸めの関数群、sqrtとlog、%% 剰余演算子、そして特殊値のInfとNaNを解説します。
- 文字列Rでテキストを扱うために必要なすべて:文字列の作成、pasteとpaste0による連結、sprintfによる整形、そしてgsub・grepl・strsplitによる検索を解説します。
- 入力と出力Rの出力の仕組み(自動表示、print()とcat()の違い、message())と、readline()やreadLines()でユーザー入力を読み取る方法を解説します。
制御フロー
- 演算子Rで必要なすべての演算子:%% と %/% を含む算術、ベクトル化された比較、& と && の違い、そして所属を判定する %in% を解説します。
- if / elseRの条件分岐:if/else if/else の書き方、スクリプトを壊す波かっこの落とし穴、ベクトル全体に効く ifelse()、そして多分岐のための switch() を解説します。
- forループRのforループの仕組み:ベクトルや添字を巡回する方法、ベクトルを伸ばす罠を避けた結果の収集、nextとbreak、そしてベクトル化された呼び出しがループに勝る場面を解説します。
- whileループRのwhileループの仕組み:条件を先に判定する繰り返し、do-while相当のrepeatとbreak、next、そして無限ループを避けるための習慣を解説します。
データ構造
- ベクトルベクトルはRの基本単位で、単一の数値さえベクトルです。c()による作成、(1から始まる)添字アクセス、論理マスクによる絞り込み、そしてベクトル全体への一括演算を解説します。
- リストリストは何でも入るRのコンテナです。型の混在、入れ子構造、データフレームまるごと。鍵となるのは、[ が小さなリストを返し、[[ が要素そのものを返すことを理解することです。
- 行列matrix()・cbind()・rbind() による行列の作成、行と列への添字アクセス、そして要素ごとの * と本物の行列積 %*% を混同しないための解説です。
- 因子(factor)因子は R がカテゴリデータを格納する方法です。テキストのラベルをまとった整数コード。作成方法、順序の付け方、基準水準の設定、そして factor から numeric への変換の罠を避ける方法を解説します。
- データフレームデータフレームは R の表計算シートです。長さの等しい名前付きの列があり、それぞれが独自の型を持ちます。作成方法、str() と head() による把握、列・行・セルへのアクセス方法を解説します。
- 欠損値(NA)NA は「不明」を意味し、触れたすべての計算に広がります。is.na() で検出し、na.rm = TRUE で読み飛ばし、意図的に削除または置換する方法を解説します。
関数とパッケージ
- 関数R で関数を作る方法 — function(x) { } の構文、戻り値、既定引数と名前付き引数、... (ドット)、無名関数、そしてスコープの仕組みを解説します。
- apply ファミリーapply ファミリー(apply, lapply, sapply, vapply, mapply, tapply)は、データのすべての要素に関数を適用します。それぞれが何をするのか、どんなときに使うのかを解説します。
- パイプ%>% の意味、base R のネイティブパイプ |> の仕組み、それぞれの規則とプレースホルダ、そして新しいコードではどちらを使うべきかを解説します。
- パッケージR のパッケージの仕組み: install.packages() による CRAN からのインストール、library() による読み込み、require() と library() の違い、pkg::fun()、そして知っておく価値のあるパッケージ。
- 作業ディレクトリR がファイルを探す場所とその制御方法: getwd()、setwd()、list.files()、rm(list = ls()) による環境の消去、そして .RData の自動保存が罠である理由。
データ整形
- dplyrdplyr とは何か、インストール方法、そして 6 つの中核となる動詞とパイプが、雑然としたデータフレームのコードを読みやすいパイプラインに変える方法を解説します。
- 絞り込みと部分抽出必要な行と列を残すためのあらゆる方法: 括弧による論理マスク、1 行で書ける subset()、%in%、NA の罠、そして dplyr の filter() と select()。
- 列の追加(mutate)データフレームの列を追加・変換・削除する方法: df$new <- ...、条件付き列のための ifelse()、transform()、そして case_when() を伴う dplyr の mutate()。
- 列名の変更R でデータフレームの列名を変更する: names() と colnames()、位置による変更と名前による変更、setNames()、dplyr の rename()、そして雑然としたインポート済みヘッダーの整理。
- 並べ替えR の並べ替えの実際: ベクトルのための sort()、データフレームに order() のインデックスの技が必要な理由、降順と複数列の並べ替え、そして dplyr の arrange()。
- グループ化と集計R でグループごとの統計量を計算するあらゆる方法: table() による集計、グループごとに 1 つの統計量を返す tapply()、aggregate() の式インターフェース、そして dplyr の group_by() と summarize()。
- 結合(マージとジョイン)共通のキーでデータフレームを結合する: 内部結合・左結合・右結合・完全結合のための merge()、by.x / by.y による異なるキー名、dplyr の join ファミリー、そして行を積み重ねる rbind()。
- ピボット(変形)横持ちと縦持ちのデータ形式と、その間を変換する方法: tidyr の pivot_longer() と pivot_wider()、古い spread / gather という名前、そして base R の reshape()。
インポートとエクスポート
- CSV の読み込みread.csv() で CSV ファイルを R に取り込む方法 — 重要な引数、失敗の大半を引き起こす作業ディレクトリの罠、そして readr::read_csv を使う価値があるのはいつか。
- Excel の読み込みR は単独では .xlsx ファイルを開けません — その隙間を埋めるのが readxl パッケージです。シートや範囲、ヘッダーの読み込み方、Excel への書き出し、そして典型的な Excel インポートの罠の避け方。
- CSV と RDS の書き出しR からのエクスポート方法: 必ず row.names = FALSE を付ける write.csv、他の区切り文字に使う write.table、そして型を失わずに往復できる saveRDS。
- 日付R の Date クラスは衣装をまとった日数カウンタです。as.Date による文字列の解析、出力用の書式設定、日付の引き算、連続した日付の生成、そして POSIXct が必要になる場面を解説します。
グラフ
- plot()R の plot() 関数の使い方 — グラフの種類、タイトルと軸ラベル、色、点の記号 (pch)、lines() や abline() による重ね描き、そして凡例。
- ヒストグラムR の hist() でヒストグラムを作る方法 — breaks の選び方、バーの装飾、密度スケールへの切り替え、正規曲線の重ね描き、そして ggplot2 版。
- 箱ひげ図R の boxplot() で箱ひげ図を作る方法 — 箱とひげの読み方、グループ比較のための formula インターフェース、装飾、そして図の背後にある数値の求め方。
- 散布図R で散布図を作る方法 — plot() で 2 変数を描き、abline(lm()) で回帰直線を追加し、lowess() で平滑化し、pairs() で行列を作ります。
- 棒グラフR の barplot() で棒グラフを作る方法 — 名前付きベクトルや table() から描く、行列によるグループ化棒と積み上げ棒、装飾、そして geom_col と geom_bar の違い。
- ggplot2ggplot2 の仕組み — data + aes() + geom という心的モデル、マッピングと設定の違い、labs()、facet_wrap()、テーマ、そして ggsave() による保存。
統計
- 記述統計R でデータを要約する方法: mean()、median()、sd()、var()、summary()、quantile() — それぞれが何を計算するのか、sd() の背後にある n−1 の話、そして R の mode() が罠である理由。
- 相関cor() で 2 変数がどれだけ連動するかを測り、cor.test() でその関係が本物かを検定し、相関行列で多数の変数を一度に見渡します。
- t 検定t.test() で 1 標本・2 標本・対応のある t 検定を実行し、そして本当に重要な部分 — 出力のすべての行(t、df、p 値、信頼区間)を読み解きます。
- 分散分析aov() で 3 群以上の平均を比較し、分散分析表をセルごとに読み解き、TukeyHSD() で実際にどの群が異なるのかを突き止めます。
- 線形回帰lm() で回帰を当てはめ、summary() のすべてのブロック — 係数、標準誤差、p 値、決定係数、F 統計量 — を読み解き、predict() で予測を行います。
- ロジスティック回帰glm(family = binomial) で yes/no の結果をモデル化します。summary の読み方、対数オッズの係数を exp() でオッズ比に変換する方法、そして予測確率を正しく取得する方法を解説します。
- 信頼区間平均・比率・モデル係数の信頼区間を t.test()、prop.test()、confint() で求めます。さらに「95% の信頼」が実際に何を意味するのか、標本サイズが幅をどう決めるのかも解説します。
- 乱数rnorm()、runif()、rbinom()、sample() でランダムなデータを生成し、set.seed() で再現可能にし、分布に対する R の d/p/q/r という命名体系を読み解きます。