我正在用 JAGS 中的 BUGS 代码在 R 中开发贝叶斯层次模型。
在我的模型中,我有两个矩阵,它们在相同的矩阵位置包含彼此相关的信息。我的信息按行排列。我按行对第一个矩阵 Distmat 应用数学运算:
diffmat[i,j] <- abs(Distmat[birthterr[i],j] - Dist[i])
我有兴趣在新向量中记录每行 diffmat 中每个最小值的列位置,然后将此向量应用于第二个矩阵。这在使用函数“which”或“which.min”的常规 R 代码中相对容易:
a <- numeric()
for (i in 1:dim(diffmat)[1])
for (j in 1:dim(diffmat)[2])
a[i] <- which.min(diffmat[i,])
然后将向量“a”应用于第二个矩阵(terrmat)以获得与 Distmat 位置相关的值:
b <- numeric(0)
for (i in 1:dim(diffmat)[1])
for (j in 1:dim(diffmat)[2])
b[i] <- terrmat[i, a[i]]
但是,显然 BUGS 代码无法识别 which 或 which.min(),我正在努力寻找一种将这些矩阵行位置存储在向量中的方法。也许有一个非常简单的解决方案,但我真的被困在那里。希望我的信息足够清楚。
任何建议将不胜感激。谢谢你的时间!