R チートシート
最終更新
Hello World と代入
R の慣用的な代入演算子は <- です (= 演算子も使えます)。
| 操作 | 構文 |
|---|---|
| 値を出力 | print("Hello, World!") |
| 自動出力 (コンソール) | "Hello, World!" |
| 連結して出力 | cat("Hi", name, "\n") |
| 代入 (慣用的) | x <- 5 |
| 代入 (これも有効) | x = 5 |
| 右代入 | 5 -> x |
| コメント | # this is a comment |
| スクリプトを実行 | Rscript app.R |
データ型とベクトル
ベクトルは R の基本的なデータ構造で、単一の値でさえ長さ 1 のベクトルです。
| 操作 | 構文 |
|---|---|
| 数値ベクトル | v <- c(1, 2, 3) |
| 文字ベクトル | s <- c("a", "b") |
| 論理ベクトル | b <- c(TRUE, FALSE) |
| 整数の連番 | 1:10 |
| ステップ付きの連番 | seq(0, 1, by = 0.1) |
| 値を繰り返す | rep(0, times = 5) |
| 基本型 | numeric, character, logical, integer, complex |
| 型の確認 / 変換 | class(x), as.numeric("42") |
ベクトル演算
演算はベクトル化され要素ごとに適用されます。インデックスは 1 始まりです。
| 操作 | 構文 |
|---|---|
| 要素にアクセス (1 始まり) | v[1] |
| 範囲を切り出す | v[2:4] |
| 論理によるフィルタ | v[v > 2] |
| 要素を除く | v[-1] |
| 要素ごとの計算 | v * 2, v1 + v2 |
| 長さ | length(v) |
| よく使う集約 | sum(v), mean(v), max(v) |
| ソート / 反転 | sort(v), rev(v) |
| 名前付きベクトル | c(a = 1, b = 2) |
データフレーム
データフレームは列の表で、各列は同じ長さのベクトルです。
| 操作 | 構文 |
|---|---|
| データフレームを作成 | df <- data.frame(name = c("Ada"), age = c(30)) |
| 先頭 / 末尾の行 | head(df), tail(df) |
| 次元 | nrow(df), ncol(df), dim(df) |
| 列名 | names(df), colnames(df) |
| 列を選択 | df$age または df[["age"]] |
| 行 / 列を選択 | df[1, ], df[, "age"] |
| 行を絞り込む | df[df$age > 18, ] |
| 列を追加 | df$adult <- df$age >= 18 |
| 要約統計 | summary(df) |
| 構造の概観 | str(df) |
因子とリスト
因子はカテゴリデータを格納し、リストは混在した型の要素を保持します。
| 操作 | 構文 |
|---|---|
| 因子を作成 | f <- factor(c("low", "high")) |
| 因子の水準 | levels(f) |
| 順序付き因子 | factor(x, ordered = TRUE) |
| 水準ごとに数える | table(f) |
| リストを作成 | l <- list(name = "Ada", scores = c(1, 2)) |
| 名前でアクセス | l$name または l[["name"]] |
| 位置でアクセス | l[[1]] |
| サブリスト (リストを保つ) | l[1] |
| 長さ / 名前 | length(l), names(l) |
制御フロー
条件はかっこ、ブロックは波かっこで囲みます。
| 操作 | 構文 |
|---|---|
| if / else if / else | if (x > 0) { ... } else if (x < 0) { ... } else { ... } |
| ベクトル化された if-else | ifelse(v > 0, "pos", "neg") |
| for ループ | for (i in 1:10) { ... } |
| ベクトルを for | for (x in v) { ... } |
| while ループ | while (x < 100) { ... } |
| break 付きの repeat | repeat { if (done) break } |
| switch | switch(key, a = 1, b = 2) |
| 論理演算子 | &&, ||, ! (スカラー); &, | (ベクトル) |
関数
関数は第一級で、最後に評価された式が返されます。
| 操作 | 構文 |
|---|---|
| 関数を定義 | add <- function(a, b) { a + b } |
| 明示的な return | return(a + b) |
| デフォルト引数 | greet <- function(name = "World") { ... } |
| 可変長引数 | f <- function(...) { sum(...) } |
| 名前で呼び出す | box(w = 2, h = 3) |
| 無名関数 | function(x) x * 2 |
| 無名関数 (省略形) | \(x) x * 2 |
| 高階関数に渡す | sapply(1:3, function(x) x^2) |
apply ファミリー
明示的なループを書かずに、データに関数を適用します。
| 関数 | 機能 |
|---|---|
apply(m, 1, sum) | 行列の行 (1) または列 (2) に適用 |
sapply(v, f) | ベクトルに適用し、ベクトル/行列に簡約 |
lapply(v, f) | ベクトルに適用し、常にリストを返す |
vapply(v, f, numeric(1)) | sapply に似るが、戻り値の型をチェック |
mapply(f, a, b) | 複数のベクトルに並行して適用 |
tapply(x, group, mean) | グループごとに関数を適用 |
Map(f, a, b) | リストを返す多変量の apply |
Reduce(+, v) | 二項関数でベクトルを畳み込む |
よく使うデータ整形・統計の関数
データの要約や再形成によく使う base 関数。
| 関数 | 機能 |
|---|---|
mean(v) / median(v) | 平均 / 中央値 |
sd(v) / var(v) | 標準偏差 / 分散 |
min(v) / max(v) / range(v) | 最小 / 最大 / 両方 |
quantile(v) | 分位数 (例: 四分位数) |
table(x) | 値の頻度カウント |
unique(v) / duplicated(v) | 重複しない値 / 重複フラグ |
is.na(v) / na.omit(df) | 欠損値を探す / 除く |
aggregate(y ~ g, df, mean) | グループ g ごとに y を要約 |
order(v) | ソート用のインデックス順 |
cor(x, y) | 2 つのベクトルの相関 |
最もよく使う R の構文を 1 ページにまとめました。この R チートシートは、言語の中核のクイックリファレンスです。代入とデータ型、ベクトルとベクトル演算、データフレーム、因子とリスト、制御フロー、関数、そして rstats のデータ分析全般で使われる apply ファミリーを収録しています。
ここに載っているものはすべて base R で、素のインストールで動き、追加パッケージは不要です。必要なものをコピーするか、R プレイグラウンドですべてのスニペットをその場で試してみてください。セットアップは不要です。
R チートシート よくある質問
この R チートシートは無料ですか?
はい。この R チートシートは完全に無料で、登録も不要です。ブックマークしておけば、ベクトル演算やデータフレームのメソッド、統計関数を調べたいときにいつでも戻ってこられます。
R のベクトルは本当に 1 始まりのインデックスですか?
はい。ほとんどのプログラミング言語と違い、R のインデックスは 1 から始まるので、
v[1] は最初の要素を、v[length(v)] は最後の要素を返します。負のインデックスには特別な意味があり、v[-1] は末尾から数えるのではなく最初の要素を取り除きます。この 1 始まりの慣習は、ベクトル、リスト、データフレームに共通して貫かれています。R のデータフレームとは何ですか?
データフレームは R の表型です。各列が同じ長さのベクトルである列の集まりで、列ごとに異なる型 (数値、テキスト、因子) を持てます。データセットの標準的な構造で、行が観測、列が変数です。
df[rows, columns] でインデックスし、df$name で列を選び、str(df) や summary(df) で中身を確認します。R をオンラインで練習できますか?
はい。R プレイグラウンドを開けば、このチートシートのどのスニペットもブラウザ上で実行できます。R や RStudio のインストールは不要です。体系的に学びたいときは、Coddy の無料インタラクティブ R コースが、ベクトルとデータフレームから apply ファミリー、統計まで段階的に導いてくれます。
このチートシートは初心者に向いていますか?
はい。最もよく使うトピック (代入、ベクトル、データフレーム) から高度なもの (apply ファミリーと統計関数) へと並べてあるので、初日から上のセクションを使い、残りには慣れながら進めます。