【发布时间】:2020-08-22 16:16:48
【问题描述】:
我正在尝试自动化大部分线性回归/模型选择工作流程。但是我在 for 循环中遇到了一些问题;我猜它们主要是动态变量命名的问题。
我设法使第一步(回归建模)的循环自动化。虽然理想情况下我希望模型存储在以下约定中:lm.model, lm1.model, lm2.model ...但我不是确定如何将动态数字放在变量字符串中。我只设法把它放在最后:
lm.model[i] <- for (i in 1:5){
model_name <- paste("lm.model", i , sep = "")
assign(model_name, lm(Y ~ poly(X, i), data = training.dat))
}
但是按照当前的标签约定,下一步是行不通的:
lmod.fit[i] <- for(i in 1:5){
fit_name <- paste("lmod.fit", i, sep = "")
assign(fit_name, predict(lm.model[i], newdata = training.dat))
}
返回错误
Error in UseMethod("predict") : no applicable method for 'predict'
applied to an object of class "list"
在后续步骤中,我还想循环粘贴以下部分:
x1 = lm.fit,
x2 = lm2.fit,
x3 = lm3.fit,
x4 = lm4.fit,
x5 = lm5.fit
c("x1", "x2", "x3", "x4", "x5")
但是我在使用 paste() 函数时遇到了问题,因为输出是单个字符串。
如果有一种不那么繁琐的方法来完成这一切,请告诉我我还能尝试什么!
【问题讨论】:
-
也许这个link 是相关的。
-
因为名字是
lm.model1,lm.model2不是向量也不是列表lm.model -
您可以通过运行
ls()命令进行检查,该命令将显示 .globalEnv 中的对象