1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rのapply関数ファミリー

Last updated at Posted at 2025-03-17

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        |

これらの関数を使い分けることで、データ処理を効率化できる。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?