R の経験はあまりありません。次のような for ループがある Gibbs サンプラーを作成しようとしています。
for (iNum in 1:totNum) {
rateNum <- Y3[iNum]
if(Y3[iNum] > 0) {
yStar3[iNum] <- rtnorm(1, mean = Mean3[iNum], sd = sqrt(Var3),
lower = gz[rateNum], upper = gz[rateNum + 1])
} else if(Y3[iNum] == 0) {
yStar3[iNum] <- rtnorm(1, mean = Mean3[iNum], sd = sqrt(Var3),
lower = -Inf, upper = Inf);
}
}
これには時間がかかりすぎています。私は使用しようとしましlapply
たが、それも十分に高速ではありません。このループをベクトル化する方法はありますか?
ありがとうございます。