2015-03-23 2 views
2

В следующем коде я пытаюсь создать матрицу, которая будет списком с opt.lam для каждого города. После запуска цикла первые два города всегда работают, а затем я получаю сообщение об ошибке для любых городов после этого.Ошибка в `[<-` (` * tmp * `,, подстрочный индекс за пределами индекса за пределами

Это ошибка, которую я получаю. (Coefmatrix отлично работает, это просто ошибка, вызывающая эту ошибку) .

Ошибка в [<- (*tmp*,, I, значение = с (0,577199381062121, 0.577199381062121, : индекс из границ

Вот мой код:

lambdamatrix <- matrix(nrow=n,ncol=2) 
rownames(lambdamatrix) <- cityIDs 
colnames(lambdamatrix) <- c("lambda.min","lambda.1se") 
for (i in 1:n) { 
    data <- subset(simdata, city==cityIDs[i]) 
    x <- as.matrix(data.frame(data[,3:24])) 
cvfit <- cv.glmnet(x, data$Y, family="poisson", offset=log(data$population)) 
opt.lam <- c(cvfit$lambda.min, cvfit$lambda.1se) 
fit <- glmnet(x, data$Y, family= "poisson", offset=log(data$population)) 
abline(plot(fit, "lambda", label= TRUE, 
      main = cityIDs[i]), v=log(opt.lam), lty=2, lwd=3, 
            col=c("red","dark green")) 
coefmatrix[,i] <- coef(fit, s=opt.lam[1])[1:23] 
lambdamatrix[,i] <- c(cvfit$lambda.min, cvfit$lambda.1se)[1:n] 
}` 

ответ

3

В [,i], i это столбец индексатор (тогда как [i,] будет строка индексатор).

Поскольку вы определяете lambdamatrix как matrix(nrow = n, ncol = 2), как только вы пройдете i=2, вы запрашиваете столбцы, которые не существуют.

+0

Спасибо! Это сработало. – Izzinator

Смежные вопросы