# 平行移動と拡大縮小で(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 のメモリー確保も必要ないし,添え字を書く必要もないので,実にすっきり書ける。
ポイント:「明示的に」繰り返しを記述しなければならないということは,無駄なことの証明
※コメント投稿者のブログIDはブログ作成者のみに通知されます