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))

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