はじめに
今回は繰り返し処理の1つとしてapply
関数を紹介したいと思います。for文より一歩進んだ繰り返し処理として覚えてみてください!
apply関数とは
まずapply
関数について紹介します。この関数はアレイ(3次元以上の次元を持てるもの)やデータフレーム、マトリックスに対して使うことができる繰り返し処理関数です。書き方がfor文よりも少しスマートな感じになるので可読性がfor文よりも上がります。またパイプ演算子(%>%
)とも相性が良いです。
使い方
基本的な使い方は以下のとおりです。
apply(処理したいデータ, 対象となる次元, 処理したい関数)
- 処理したいデータ:繰り返し処理の対象となるデータ。アレイやマトリックスなど。
- 対象となる次元:データフレームなら1が行、2が列。
- 処理したい関数:繰り返し実行する関数。
具体例
今回は各列の最大値を探す処理をやってみます。コードは以下の通りです。
set.seed(1) d = matrix(sample(1:1000, 20), ncol = 4) # 1から1000までの数字からランダムに20個の値を取り、4列(5行)のマトリックスにする apply(d, 2, max) # 列に対して最大値を求める関数を処理
出力される結果はこんな感じになります。(クリックで表示)
[1] 930 978 950 841
4列のマトリックスの列に対して処理をしているので4つの値が出力されています。
この処理のイメージは以下の図のようになります。
また各行の最大値を探す処理は以下のようになります。
set.seed(1) d = matrix(sample(1:1000, 20), nrow = 5) # 1から1000までの数字からランダムに20個の値を取り、5行のマトリックスにする apply(d, 1, max) # 行に対して最大値を求める関数を処理
出力される結果はこんな感じになります。(クリックで表示)
[1] 836 679 775 978 950
5行のマトリックスの行に対して処理をしているので5つの値が出力されています。
この処理の動作イメージは以下のようになります。
まとめ
今回は繰り返し文としてfor文と並んでよく使われるapply
関数を紹介しました。for文よりもシンプルなコードになるのでできればapply
関数を使いこなせるようになってください。