裏 RjpWiki

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

ダメ出し:行列・配列を無駄に使ってはいけない

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

http://d.hatena.ne.jp/KABIRA/

# 平行移動と拡大縮小で(0,1)におさめる
U<-V
U[1,]<-(V[1,]-min(V[1,]))/(max(V[1,])-min(V[1,]))
U[2,]<-(V[2,]-min(V[2,]))/(max(V[2,])-min(V[2,]))
U[3,]<-(V[3,]-min(V[3,]))/(max(V[3,])-min(V[3,]))

というのがあるが, U <- V は必要な大きさの行列を確保するためだけで,べつに V を U に代入しているわけではない。その後の3行も,無駄な記述である。添え字が違うだけだ。もし行数が100行あっても,100行のプログラムを書くわけではあるまい。3行だから,for 文で書いても行数はたいして変わらないということでこんな風に書いたのだろう。適切に書くと以下のようになる。

U <- t(apply(V, 1, function(x) (x-min(x)) / diff(range(x))))

U のメモリー確保も必要ないし,添え字を書く必要もないので,実にすっきり書ける。

ポイント:「明示的に」繰り返しを記述しなければならないということは,無駄なことの証明

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ダメ出し:三角ダイアグラム... | トップ | ダメ出し:ryamadaのRソース... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事