【初心者向け】apply関数の使い方

R

Rプログラミングには、データの処理を効率化するために様々な関数が用意されています。その中でも、ループを使わずにデータを処理するためのapply関数は非常に便利です。この記事では、初心者向けにapply関数の種類とその使い方について紹介します。

apply関数の種類

Rには、データを効率的に処理するためのapply関数がいくつかあります。

  1. apply
  2. tapply
  3. lapply
  4. sapply
  5. mapply

1. apply

apply関数は、行列やデータフレームに対して、行ごとまたは列ごとに関数を適用するために使用されます。

使用例

例えば、以下のような3×3の行列があるとします。

# 行列を作成
matrix_data <- matrix(1:9, nrow=3, byrow=TRUE)
matrix_data
V1V2V3
1123
2456
3789

この行列に対して、行ごとに合計を計算するには以下のようにします。

# 行ごとに合計を計算
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

この記事が少しでもお役に立てたら嬉しいです。

プロフィール
この記事を書いた人

農学の博士前期課程を修了した研究者。
植物生理と環境調節をテーマに研究しています。

Masaをフォローする
R
Masaをフォローする
タイトルとURLをコピーしました