裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

ダメ出し:hatena グループの閉鎖性

2011年11月06日 | ブログラミング

コメントするのにログインまたは登録しろと。。。
そんなのやだね。登録者数を増やしたいのか。

http://d.hatena.ne.jp/tsutatsutatsuta/20111024

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

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
> 

それだけです.
===========================

それだけです?

そんな大げさなことする必要はさらさらない。以下で十分

> t(t(xx)-1:4)
     [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    4    4    4    4
[3,]    8    8    8    8

> xx-c(0, 4, 8)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    1    2    3    4
[3,]    1    2    3    4

> xx-0:2*4
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    1    2    3    4
[3,]    1    2    3    4

 

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村