首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用R2WinBUGS加载三维数组?

如何使用R2WinBUGS加载三维数组?
EN

Stack Overflow用户
提问于 2013-05-19 03:16:13
回答 1查看 524关注 0票数 0

由于WinBUGS和R有不同的方法来组织数组的数据,所以在使用R2WinBUGS时,我应该如何组织数据,以确保顺序正确?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-05-20 05:52:16

如果您将数据指定为对象的命名列表(参见? R2WinBUGS - data参数),那么在bugs中就不必担心这个问题。R2WinBUGS将重新组织数据,使其在WinBUGS中的结构与在R中的结构相同。

例如,如果在R中指定一个数组:

代码语言:javascript
复制
y <- array(1:24,dim=c(2,3,4))

看起来像是

代码语言:javascript
复制
> y
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

, , 3

     [,1] [,2] [,3]
[1,]   13   15   17
[2,]   14   16   18

, , 4

     [,1] [,2] [,3]
[1,]   19   21   23
[2,]   20   22   24

然后在bugs函数的data参数中指定(例如bugs(data=list(y=y)...),则WinBUGS (data.txt)的数据为:

代码语言:javascript
复制
list(y= structure(.Data= c(1.00000E+00, 7.00000E+00, 1.30000E+01, 1.90000E+01,  
3.00000E+00, 9.00000E+00, 1.50000E+01, 2.10000E+01, 5.00000E+00, 1.10000E+01,
1.70000E+01, 2.30000E+01, 2.00000E+00, 8.00000E+00, 1.40000E+01, 2.00000E+01, 
4.00000E+00, 1.00000E+01, 1.60000E+01, 2.20000E+01, 6.00000E+00, 1.20000E+01, 
1.80000E+01, 2.40000E+01), .Dim=c(2, 3, 4)))

在WinBUGS中如下所示:

代码语言:javascript
复制
y[1,1,1]      1.0
y[1,1,2]      7.0
y[1,1,3]      13.0
y[1,1,4]      19.0
y[1,2,1]      3.0
y[1,2,2]      9.0
y[1,2,3]      15.0
y[1,2,4]      21.0
y[1,3,1]      5.0
y[1,3,2]      11.0
y[1,3,3]      17.0
y[1,3,4]      23.0
y[2,1,1]      2.0
y[2,1,2]      8.0
y[2,1,3]      14.0
y[2,1,4]      20.0
y[2,2,1]      4.0
y[2,2,2]      10.0
y[2,2,3]      16.0
y[2,2,4]      22.0
y[2,3,1]      6.0
y[2,3,2]      12.0
y[2,3,3]      18.0
y[2,3,4]      24.0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16633038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档