我沒有太多的經驗,在R.我想寫一個Gibbs採樣在那裏我有一個循環是這樣的:如何向量化這個循環中的R
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
,但這還不夠快。有沒有一種方法來實現這個循環的矢量化?
謝謝你,最好的問候!
我會說是的,因爲'rtnorm'被矢量,但你似乎對每個值使用不同的截斷值(上,下),而且我認爲這個參數沒有被矢量化。 – joran 2013-02-21 19:54:26