Rプログラミングには、データの処理を効率化するために様々な関数が用意されています。その中でも、ループを使わずにデータを処理するためのapply
関数は非常に便利です。この記事では、初心者向けにapply
関数の種類とその使い方について紹介します。
apply関数の種類
Rには、データを効率的に処理するためのapply
関数がいくつかあります。
apply
tapply
lapply
sapply
mapply
1. apply
apply
関数は、行列やデータフレームに対して、行ごとまたは列ごとに関数を適用するために使用されます。
使用例
例えば、以下のような3×3の行列があるとします。
# 行列を作成
matrix_data <- matrix(1:9, nrow=3, byrow=TRUE)
matrix_data
V1 | V2 | V3 | |
---|---|---|---|
1 | 1 | 2 | 3 |
2 | 4 | 5 | 6 |
3 | 7 | 8 | 9 |
この行列に対して、行ごとに合計を計算するには以下のようにします。
# 行ごとに合計を計算
apply(matrix_data, 1, sum)
出力結果は以下の通りです。
[1] 6 15 24
また、列ごとに平均を計算するには以下のようにします。
# 列ごとに平均を計算
apply(matrix_data, 2, mean)
出力結果は以下の通りです。
[1] 4 5 6
2. tapply
tapply
関数は、ベクトルに対して因子を基にグループ化し、関数を適用するために使用されます。これにより、グループごとにデータをまとめて処理することができます。
使用例
例えば、以下のようなデータとグループがあるとします。
# データを作成
data <- c(1, 2, 3, 4, 5, 6)
group <- factor(c("A", "A", "B", "B", "C", "C"))
このデータに対して、グループごとの平均を計算するには以下のようにします。
# グループごとの平均を計算
tapply(data, group, mean)
出力結果は以下の通りです。
A B C
1.5 3.5 5.5
3. lapply
lapply
関数は、リストに対して関数を適用し、結果をリストとして返します。複雑なデータ構造を持つリストに対して、一括で関数を適用する際に便利です。
使用例
例えば、以下のようなリストがあるとします。
# リストを作成
list_data <- list(a = 1:5, b = 6:10)
このリストの各要素に対して合計を計算するには以下のようにします。
# 各要素の合計を計算
lapply(list_data, sum)
出力結果は以下の通りです。
$a
[1] 15
$b
[1] 40
4. sapply
sapply
関数は、lapply
と同様ですが、結果をベクトルや行列として返します。より扱いやすい形で結果を取得する際に使用します。
使用例
先ほどのリストに対して、sapply
を使用して合計を計算するには以下のようにします。
# リストを作成
list_data <- list(a = 1:5, b = 6:10)
# 各要素の合計を計算
sapply(list_data, sum)
出力結果は以下の通りです。
a b
15 40
5. mapply
mapply
関数は、複数の引数に対して関数を適用します。複数のベクトルに対して、要素ごとに関数を適用する場合に便利です。
使用例
例えば、以下の2つのベクトルがあるとします。
# ベクトルを作成
vec1 <- 1:5
vec2 <- 6:10
これらのベクトルの各要素を加算するには、以下のようにします。
# 各要素を加算
mapply(sum, vec1, vec2)
出力結果は以下の通りです。
[1] 7 9 11 13 15
この記事が少しでもお役に立てたら嬉しいです。