【问题标题】:Error in `[<-`(`*tmp*`, , subscript out of bounds subscript out of bounds`[<-`(`*tmp*`, , 下标超出范围 下标超出范围) 中的错误
【发布时间】:2015-05-27 04:01:20
【问题描述】:

在下面的代码中,我试图创建一个矩阵来列出每个城市的 opt.lam。运行循环后,前两个城市总是工作,然后我得到任何城市的错误。

这是我得到的错误。 (coefmatrix 工作正常,只是 lambdamatrix 会产生此错误)。

[&lt;-(*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]
}`

【问题讨论】:

    标签: r for-loop matrix lambda glmnet


    【解决方案1】:

    [,i] 中,i 是列索引器(而[i,] 是行索引器)。

    由于您将lambdamatrix 定义为matrix(nrow = n, ncol = 2),一旦您超过i=2,您将请求不存在的列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多