【发布时间】:2021-07-04 17:18:41
【问题描述】:
我要通过循环对不同的数据集执行 lm(),首先应该使用 filter() 制作数据集,然后对过滤后的数据集执行 lm() 并保存结果。 但是,我总是收到此错误,我不知道自己做错了什么。
“
contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]]) 中的错误:
对比只能应用于具有 2 个或更多水平的因素"
我的代码:
a<-c("var1", "var2", "var3") #character vector
for (b in a){
dataset <- dataset%>%filter(variable_name == b)
lm<- lm(y ~ x1 + x2, data=dataset)
assign(paste(b, "lm", sep='_'), lm)
}
谁能帮帮我?我知道这真的很初级。根据搜索结果,我也试过了
dataset <- dataset%>%filter(variable_name == **paste0("'",b,"'")**)
但总是遇到同样的错误...谢谢!
【问题讨论】:
-
您在每次迭代中更新全局 env 中的
dataset,当您进入下一次迭代时会失败,而是创建临时数据集(在第一次迭代之后,数据集只有 variable_name 值为 ' var1' .e.tmp <- dataset%>%filter(variable_name == b)并在lm中使用它