【发布时间】:2020-05-14 16:14:16
【问题描述】:
我有一些关于同一主题的问题。
(1) 我正在尝试循环:
premium1999 <- as.data.frame(coef(summary(data1999_mod))[c(19:44), 1])
10 年,我在其中写道:
for (year in seq(1999,2008)) {
paste0('premium',year) <- as.data.frame(coef(summary(paste0('data',year,'_mod')))[c(19:44), 1])
}
注意:
data1999_mod 是回归结果,我想将它的一些估计器提取为数据框向量。
coef(summary(data1999_mod)) 看起来像这样:
#A matrix: ... of type dbl
Estimate Std. Error t value Pr(>|t|)
age 0.0388573570 2.196772e-03 17.6883885 3.362887e-6
age_sqr -0.0003065876 2.790296e-05 -10.9876373 5.826926e-28
relation 0.0724525759 9.168118e-03 7.9026659 2.950318e-15
sex -0.1348453659 8.970138e-03 -15.0326966 1.201003e-50
marital 0.0782049161 8.928773e-03 8.7587533 2.217825e-18
reg 0.1691004469 1.132230e-02 14.9351735 5.082589e-50
...
但是,即使我在这里没有使用$ 运算符,它也会返回Error: $ operator is invalid for atomic vectors。
(2) 另外, 我想创建一个包含相关年份的重复值的列“年”,并试图循环这个:
premium1999$year <- 1999
我在其中写道:
for (i in seq(1999,2008)) {
assign(paste0('premium',i)[['year']], i)
}
在这种情况下,它返回Error in paste0("premium", i)[["year"]]: subscript out of bounds
(3) 此外,我想重复一些行并循环:
premium1999 <- rbind(premium1999, premium1999[rep(1, 2),])
又过了 10 年,我写道:
for (year in seq(1999,2008)) {
paste0('premium',year) <- rbind(paste0('premium',year), paste0('premium',year)[rep(1, 2),])
}
这次返回Error in paste0("premium", year)[rep(1, 2), ]: incorrect number of dimensions
我也尝试遍历其他一些类似的东西,但总是出错。
每个代码单独运行良好。
我找不到我做错了什么。非常感谢任何帮助或建议。
【问题讨论】:
-
对于你的问题 1,试试这个: for (year in seq(1999,2008)) { assign (paste0('premium',year),
) } 在我看来你正在使用不必要的循环。如果您指定示例数据输入和预期输出(请不要截图),它会更容易提供帮助。 -
我试过了,但它仍然返回相同的错误。我将编辑有关线程上有关 (1) 问题的更多信息。我想从第 19 行到第 44 行的“data1999_mod”中提取回归估计器作为数据框。