Menu
Coddy logo textTech

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 / elseif (x > 0) { ... } else if (x < 0) { ... } else { ... }
ベクトル化された if-elseifelse(v > 0, "pos", "neg")
for ループfor (i in 1:10) { ... }
ベクトルを forfor (x in v) { ... }
while ループwhile (x < 100) { ... }
break 付きの repeatrepeat { if (done) break }
switchswitch(key, a = 1, b = 2)
論理演算子&&, ||, ! (スカラー); &, | (ベクトル)

関数

関数は第一級で、最後に評価された式が返されます。

操作構文
関数を定義add <- function(a, b) { a + b }
明示的な returnreturn(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 ファミリーと統計関数) へと並べてあるので、初日から上のセクションを使い、残りには慣れながら進めます。
Coddy programming languages illustration

CoddyでRを学ぼう

始める