カエルベイズ本のコードを実行していてWinBUGSとRで共通のようで共通でないコードを一つ見つけた。
structure()なのだが、
WinBUGSだと、
Y1=structure(.Data = c(
1, 1, 1, 1, 0, 0, 0,
1, 1, 0, 1, 1, 1, 0,
1, 1, 0, 0, 0, 0, 0,
1, 0, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0),
.Dim=c(5,7))
こう入力すると、5行7列の見たままの行列になる。つまり、Rでいうmatrix(,byrow=TRUE)と一緒。
これは、Rでもエラーなくコピペできるのだが、これが落とし穴。上のコードで入力すると
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 1 0 1 1 0 0 0
[2,] 1 0 1 0 1 0 0
[3,] 1 1 1 0 0 0 0
[4,] 1 1 0 0 1 1 0
[5,] 0 0 1 0 0 0 0
となってしまうので、カエルベイズ本のコードにstructure()で始まる行列のコマンドをRに移すときは、
Y2=matrix(c(
1, 1, 1, 1, 0, 0, 0,
1, 1, 0, 1, 1, 1, 0,
1, 1, 0, 0, 0, 0, 0,
1, 0, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0),
nrow=5,byrow=TRUE)
と書き換えてあげなくてはいけない。
最近のコメント