- apply関数はmatrixもしくはdata.frameに対してfor文と同じ効果を示します。全てのrow、もしくは全てのcolumn 方向に対して特定の処理を行う場合に便利です。
- apply関数はapply(object, 処理方向の指定, 関数, 関数の第2引数以降の指定,...)で定義します。
- 第1引数のobjectはmatrixかdata.frameです。
- 第2引数の処理方向の指定はrow方向なら1、column方向なら2を座標毎ならc(1,2)を指定します。
- 第3引数の関数は、apply関数の処理内で、その関数自体の第1引数がobjectのrowもしくはcolumnデータを使った処理を行います。そして、その関数が第2引数を持つ場合は、apply関数の第4引数以降に指定します。
- 例
> x <- matrix(-6:5,nrow=2,dimnames=list(1:2,letters[1:6])) > apply(x,1,sum) # row 方向の合計を計算 1 2 -6 0
- これをfor 文で記載すると
> y <- NULL > for(i in 1:nrow(x)) y <- c(y,sum(x[i,]))
となります。
- 第4匹数を使う例
> x[1,3] <- NA > apply(x,1,sum) # row 方向の合計を計算、x[1,3] がNA が影響する 1 2 NA 0 > apply(x,1,sum,na.rm=TRUE) # NA を無視する引数を指定すると良い 1 2 -4 0
- また、apply(x,1,sum)にはラッパー関数が存在します。
> rowSums(x,na.rm=TRUE) # apply(x,1,sum) と同義 > colSums(x,na.rm=TRUE) # apply(x,2,sum) と同義
みたいな使い方ができます。