在`[<-`中出现错误(`*tmp*`), 下标越界。

3
在以下代码中,我试图创建一个矩阵,列出每个城市的opt.lam。运行循环后,前两个城市总是正常工作,然后我会在之后的任何城市遇到错误。
这是我得到的错误。(coefmatrix没有问题,只有lambdamatrix会产生此错误)。
“Error in [<-(* tmp *),, i, value = c(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]
}`
1个回答

3
[,i] 中,i 是列索引(而 [i,] 则是行索引)。
由于您将 lambdamatrix 定义为 matrix(nrow = n, ncol = 2),一旦您超过 i=2,就会请求不存在的列。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接