行列の各要素ごとに異なる引数を与えて,同じ関数を適用

applyを使って,行列の行や列ごとに,異なる引数を与えて同じ関数を適用したいときの方法です.


まずこんな行列を作成

> (xx <- t(array(1:12, dim = c(4, 3))))
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
> 


列ごとに異なる引数を与えて,各行に同じ関数を適用したいとき.
例えば,第1列なら1,第2列なら2,第3列なら3,第4列なら4を引きたいとき.

> t(apply(xx, 1, function(x){x - 1:4}))
     [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    4    4    4    4
[3,]    8    8    8    8
> 


行ごとに異なる引数を与えて,各列に同じ関数を適用したいとき.
例えば,第1行なら0,第2行なら4,第3行なら8を引きたいとき.

> apply(xx, 2, function(x){x - c(0, 4, 8)})
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    1    2    3    4
[3,]    1    2    3    4
> 


それだけです.