我正在用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)。
预先感谢您的任何建议。
答案 0 :(得分:0)
这是一个open issue,带有在Greta中重塑数组的形状。这应该在以后的版本中解决,但与此同时,这是Greta开发人员@goldingn提出的替代方案(请参见comments here):
代替:
tpi <- t(array(pi, dim = c(5, 10)))
使用:
tpi <- do.call(rbind, replicate(10, pi))
随后的逐元素乘法将不再产生错误。