在 for 循环中创建线性回归模型时出错

问题描述 投票:0回答:1

我正在创建许多对象,每个对象都是一个

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
,在实际数据中,当模型单独创建时,它们仍能正常工作

r for-loop lm
1个回答
0
投票

在你的表达式中 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()
功能修改全局环境通常是一种不好的做法。尝试将模型附加到列表中,这样所有模型都被组合在一个数据结构中。

© www.soinside.com 2019 - 2024. All rights reserved.