R_winBUGS_structure のバックアップ差分(No.2) - アールメカブ

アールメカブ


R_winBUGS_structure のバックアップ差分(No.2)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[Rの備忘録]]

structure 関数が R では,縦方向に行列を埋めていくのに対して,winBUGS では横方向にデータを埋めていくのであった.例えば以下は

 structure(.Data = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
             .Dim=c(5,2)

winBUGS では
 [1] 1 2 3 4 5
 [2] 6 7 8 9 10
となるが(winBUGSのメニュー[Info]-[Node Info]-[y]-[values]で確認してみた),R では
 [1] 1 3 5 7 9 
 [2] 2 4 6 8 10
となる.
http://www.mrc-bsu.cam.ac.uk/bugs/winbugs/manual14.pdf 
の17ページに詳しく書いてある.が,このファイルの説明は R ではうまくいかない.

変換は,行列であれば転置すれば良いだけだが,配列だとやっかいだな.作成時にstructure()関数に引数を与えることで,横方向に埋めることは可能なのだろうか?


 M <- matrix(1:10, ncol = 2)
 str(M)
 # int [1:5, 1:2] 1 2 3 4 5 6 7 8 9 10
 str(t(M))
 # int [1:2, 1:5] 1 6 2 7 3 8 4 9 5 10
 dput(M, file = "M.txt")
 # structure(1:10, .Dim = c(5L, 2L))
 dput(t(M), file = "M.txt")
 # structure(c(1L, 6L, 2L, 7L, 3L, 8L, 4L, 9L, 5L, 10L), 
   .Dim = c(2L,  5L))

うーーん,効率的な方法は何だろうか.