`[<-`(`*tmp*`, , 下标越界错误 下标越界
Error in `[<-`(`*tmp*`, , subscript out of bounds subscript out of bounds
在下面的代码中,我尝试创建一个矩阵,列出每个城市的 opt.lam。在 运行 循环中,前两个城市始终有效,然后对于之后的任何城市我都会出错。
这是我得到的错误。 (coefmatrix 工作正常,只是产生此错误的 lambdamatrix)。
错误 [<-
(*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]
}`
在 [,i]
中,i
是列索引器(而 [i,]
是行索引器)。
由于您将 lambdamatrix
定义为 matrix(nrow = n, ncol = 2)
,一旦您超过 i=2
,您正在请求不存在的列。
在下面的代码中,我尝试创建一个矩阵,列出每个城市的 opt.lam。在 运行 循环中,前两个城市始终有效,然后对于之后的任何城市我都会出错。
这是我得到的错误。 (coefmatrix 工作正常,只是产生此错误的 lambdamatrix)。
错误 [<-
(*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]
}`
在 [,i]
中,i
是列索引器(而 [i,]
是行索引器)。
由于您将 lambdamatrix
定义为 matrix(nrow = n, ncol = 2)
,一旦您超过 i=2
,您正在请求不存在的列。