我正在构建一个小的gibbs采样器,但R返回:&#34; [<-
中的错误(*tmp*
,i,j,值= NA_real_):下标超出范围&#34;。< / p>
问题在于这一行:
mu[i,j] <- alpha[i]+beta[i]*(x[j]-mean(x[]))
我只是不明白为什么?
GS <- function(x){
alpha <- c()
beta <- c()
mu <- matrix()
Y <- matrix ()
for (i in 1:x){
alpha[i] <- rnorm(1,0)
beta[i] <- rnorm(1,0)
for (j in 1:5){
mu[i,j] <- alpha[i]+beta[i]*(x[j]-mean(x[]))
Y[i,j] <- rnorm(1, mu[i,j], 1)
}
Y
}
}
答案 0 :(得分:3)
问题是你没有初始化矢量或矩阵,所以矢量的长度为0,矩阵只包含一个NA。所以你不能写任何东西来定位我,因为它不存在。
更改
alpha <- c()
beta <- c()
mu <- matrix()
Y <- matrix ()
到
alpha <- numeric(x)
beta <- numeric(x)
mu <- matrix(0,x,5)
Y <- matrix (0,x,5)