0

我正在用 Greta 编写模型,但遇到了一个小绊脚石:使用 Greta 数组的元素乘法。

可重现的错误:

library(greta)
library(MCMCpack)

以下作品(此处不涉及 Greta 数组):

pi <- rdirichlet(1, alpha = rep(1, 5))
tpi <- t(array(pi, dim = c(5, 10)))
tpi*2

以下不起作用(此处涉及 Greta 数组):

pi <- dirichlet(alpha = rep(1, 5), dim = 1)
tpi <- t(array(pi, dim = c(5, 10)))
tpi*2
Error in tpi * 2 : non-numeric argument to binary operator

以下也有效(尽管 pi 不是数组,而 tpi 是):

2*pi

但是我需要在我的模型中执行数组扩展操作(步骤 2)。

在此先感谢您的任何建议。

4

1 回答 1

0

这是在 Greta 中重塑数组的一个悬而未决的问题。这应该在下一个版本中解决,但与此同时,这里是 Greta 开发人员@goldingn 提出的替代方案(请参阅此处的评论):

代替:

tpi <- t(array(pi, dim = c(5, 10)))

利用:

tpi <- do.call(rbind, replicate(10, pi))

随后的元素乘法将不再产生错误。

于 2018-08-14T13:45:05.097 回答