Greta中的元素式乘法

时间:2018-08-13 17:21:55

标签: r greta

我正在用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)。

预先感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

这是一个open issue,带有在Greta中重塑数组的形状。这应该在以后的版本中解决,但与此同时,这是Greta开发人员@goldingn提出的替代方案(请参见comments here):

代替:

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

使用:

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

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