統計プログラムRの勉強日記

Rに関して勉強してきたことを紹介します

【R】apply関数の使い方

applyタイトル

はじめに

今回は繰り返し処理の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つの値が出力されています。
この処理のイメージは以下の図のようになります。

apply関数のイメージ2

また各行の最大値を探す処理は以下のようになります。

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つの値が出力されています。
この処理の動作イメージは以下のようになります。

apply関数のイメージ1

まとめ

今回は繰り返し文としてfor文と並んでよく使われるapply関数を紹介しました。for文よりもシンプルなコードになるのでできればapply関数を使いこなせるようになってください。