我正在创建许多对象,每个对象都是一个
lm
模型
这是iris
的例子:
di = c("Sepal.Length", "Sepal.Width")
for (v in di){
model = lm (v ~ Petal.Length + Petal.Width, data = iris)
modname = paste0("model_", v)
assign(modname, model)
}
这给了我错误:
Error in model.frame.default(formula = v ~ Petal.Length + Petal.Width, :
variable lengths differ (found for 'Petal.Length')
尽管
NA
,在实际数据中,当模型单独创建时,它们仍能正常工作
在你的表达式中 v 只是一个字符串。您需要将其转换为公式。请参阅
formula()
功能。
di = c("Sepal.Length", "Sepal.Width")
for (v in di){
model = lm (formula(paste(v, " ~ Petal.Length + Petal.Width")), data = iris)
modname = paste0("model_", v)
assign(modname, model)
}
建议使用
assign()
功能修改全局环境通常是一种不好的做法。尝试将模型附加到列表中,这样所有模型都被组合在一个数据结构中。