Rには、データフレームや行列に対して関数を適用するための便利な関数群がある。これらは「applyファミリー」と呼ばれ、それぞれ異なる用途に特化している。以下に主要な関数とその略語の意味、使い方を説明する。
apply関数
apply
関数は、行列やデータフレームに対して行または列ごとに関数を適用する。
apply(X, MARGIN, FUN, ...)
-
X
: 行列またはデータフレーム -
MARGIN
: 1は行、2は列を指定 -
FUN
: 適用する関数
例:
matrix <- matrix(1:9, nrow = 3)
1 2 3
4 5 6
7 8 9
apply(matrix, 1, sum) # 1:行ごとの合計を計算(2なら列ごと)
1+2+3=6
4+5+6=15
7+8+9=24
| 行番号 | 値 |
|-------|----|
| 1 | 6 |
| 2 | 15 |
| 3 | 24 |
lapply関数
lapply
関数は、リストに対して関数を適用し、結果をリストとして返す。l
は「list」の略。
lapply(X, FUN, ...)
-
X
: リスト -
FUN
: 適用する関数
例:
list <- list(a = 1:5, b = 6:10
lapply(list, sum) # 各リスト要素の合計を計算。結果はリストとして返される
# 結果: $a [1] 15, $b [1] 40
1+2+3+4+5=15
6+7+8+9+10=40
| 要素 | 合計 |
|-----|------|
| a | 15 |
| b | 40 |
sapply関数
sapply
関数は、lapply
と似ているが、結果をベクトルや行列に簡略化して返す。s
は「simplify」の略。
sapply(X, FUN, ..., simplify = TRUE)
-
X
: リストまたはベクトル -
FUN
: 適用する関数 -
simplify
: 結果を簡略化するかどうか
例:
list <- list(a = 1:5, b = 6:10)
sapply(list, sum) # 各リスト要素の合計をベクトルで返す
# 結果:
# a b
# 15 40
1+2+3+4+5=15
6+7+8+9+10=40
| 要素 | 合計 |
|-----|------|
| a | 15 |
| b | 40 |
tapply関数
tapply
関数は、ベクトルに対して因子ごとに関数を適用する。t
は「table」の略。
tapply(X, INDEX, FUN = NULL, ...)
-
X
: ベクトル -
INDEX
: 因子または因子のリスト -
FUN
: 適用する関数
例:
data <- c(1:10)
groups <- gl(2, 5)
tapply(data, groups, sum) # グループごとの合計を計算
1+2+3+4+5=15
6+7+8+9+10=40
| グループ | 合計 |
|---------|------|
| 1 | 15 |
| 2 | 40 |
mapply関数
mapply
関数は、複数の引数に対して関数を適用する。m
は「multiple」の略。
mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE, USE.NAMES = TRUE)
-
FUN
: 適用する関数 -
...
: 関数に渡す引数 -
MoreArgs
: 追加の引数 -
SIMPLIFY
: 結果を簡略化するかどうか -
USE.NAMES
: 結果に名前を付けるかどうか
例:
mapply(rep, 1:4, 4:1) # 各要素を指定回数繰り返す
| 要素 | 繰り返し |
|-----|----------|
| 1 | 4 |
| 2 | 3 |
| 3 | 2 |
| 4 | 1 |
これらの関数を使い分けることで、データ処理を効率化できる。