请帮我修复这个 for 循环。
要下载数据,请输入以下命令,请注意“用户名”和“密码”需要替换为人类死亡率数据库中的日志信息。您可以访问网站 https://mortality.org/ 并创建帐户(需要不到 30 秒)。
library(demography)
library(splines)
#Read Japan mortality data from the Human Mortality Database
JPNmort <- hmd.mx("JPN","username","password")
age = 2:110
data1= cbind(1:109,
JPNmort[["rate"]][["total"]][age, "2016"],
JPNmort[["pop"]][["total"]][age, "2016"])
data2 = cbind(1:109,
JPNmort[["rate"]][["total"]][age, "2017"],
JPNmort[["pop"]][["total"]][age, "2017"])
#Reformat data rows and columns
column.names = c("Age", "mu_x", "Ec_x")
rownames(data1) = NULL
rownames(data2) = NULL
colnames(data1) = column.names
colnames(data2) = column.names
spars.values <- seq(from = 0, to = 1, by = 0.001)
hyper_param_spars = expand.grid(spars.values,
c(0))
colnames(hyper_param_spars) = c("spar", "Error.Rate")
# list to store the results
sm.spar <- vector("list", nrow(hyper_param_spars))
sm.spline <- vector("list", nrow(hyper_param_spars))
for(i in 1:nrow(hyper_param_spars)) {
sm.spar[[i]] <- unlist(hyper_param_spars[i, 1])
sm.spline[[i]] <- smooth.spline(training[, "Age"],
training[, "mu_x"],
spar = sm.spar[[i]] )
# MSE
hyper_param_spars$Error.Rate[i] <- mean((validation[, "mu_x"] - fitted(sm.spline[[i]]) )^2)
}
Error in data1[, "Ages"] : subscript out of bounds
# optimal spar
optim.spar = hyper_param[which.min(hyper_param_spars$Error.Rate),1]
当我不断收到错误消息“Data1[,“Age”] 中的错误:下标超出范围”时
将数据集发布到
github
或其他方式并提供直接链接。
共享完整的回溯也很有用。
当您从代码中删除该行(倒数第四行)时,错误消息会消失吗?
Error in data1[, "Ages"] : subscript out of bounds