備忘録がてら書いておく。
n×nサイズの行列がm枚あって,それがn×m行n列に並んだデータセットがあるとする。
これをn×nがm枚,というように分割して処理していきたい,という場合。(こういうニーズがどこにどれぐらいあるのかはわからないがw)
Rでやる場合,元のデータセットはdata.frame型(かmatrix型)で,それをmatrixを要素とするlist型にまとめ直すことがしたかったのです。
いろいろ悩んだんだけど,次のようにすることで解決できた。
ここで,dataが元変数,size×sizeがrep回あるとすると,次のように実装できた。
data.t <span class="synStatement"><-</span> t<span class="synSpecial">(</span>data<span class="synSpecial">)</span> dim<span class="synSpecial">(</span>data.t<span class="synSpecial">)</span><span class="synStatement"><-</span>c<span class="synSpecial">(</span>size<span class="synSpecial">,</span>size<span class="synSpecial">,</span>rep<span class="synSpecial">)</span> gMatrix <span class="synStatement"><-</span> <span class="synType">list</span><span class="synSpecial">()</span> <span class="synStatement">for</span><span class="synSpecial">(</span>i <span class="synStatement">in</span> <span class="synConstant">1</span><span class="synSpecial">:</span>rep<span class="synSpecial">){</span> gMatrix<span class="synSpecial">[[</span>i<span class="synSpecial">]]</span> <span class="synStatement"><-</span> as.matrix<span class="synSpecial">(</span>data.t<span class="synSpecial">[,,</span>i<span class="synSpecial">])</span> <span class="synSpecial">}</span> <span class="synError">)</span>
これで,gMatrixのi番目の要素,としてMatrixが指定できる。
もっと美しいやり方があるのかもしれない。あればだれか教えてください。