在R中的循环中调用多个模型名

在R中的循环中调用多个模型名,r,R,我很难在一个循环中为多个模型创建剩余图。我使用了一个循环来创建模型: nameIndex=1 name=character(length=nrow(resp)) for(i in resp$resp){ y=response.data[,i] df=data.frame(y, modelpredictors) #this creates a temporary data frame for you nam=paste("MODEL", nameIndex, sep=".")

我很难在一个循环中为多个模型创建剩余图。我使用了一个循环来创建模型:

nameIndex=1
name=character(length=nrow(resp))


for(i in resp$resp){

  y=response.data[,i]
  df=data.frame(y, modelpredictors) #this creates a temporary data frame for you 
  nam=paste("MODEL", nameIndex, sep=".") #Create unique model names to use later
  model=lm(y~.,data=df)

  assign(nam, model)
  name[nameIndex]=nam #saving model names in a vector to use later
  nameIndex=nameIndex+1
}
现在,我想做一个循环来绘制残差图

par(mfrow=c(2,3))
for(i in nrow(resp)){
  plot(fitted(cat("MODEL.",i)),residuals (cat("MODEL.",i)))
}
然而,我得到了错误

plot.window(…)中出错:需要有限的“xlim”值

我想知道如何以有序的方式调用我在第一个循环中创建的模型,以用于绘制循环和其他我想对所有模型进行的分析

通过
cat()
函数写入终端(或磁盘),它不会生成变量名。与
assign()
对应的函数是
get()
。你应该能做到

par(mfrow=c(2,3))
for(i in nrow(resp)){
  plot(fitted(get(paste0("MODEL.",i))),residuals(get(paste0(("MODEL.",i))))
}
尽管用这样的字符串构建变量名通常不是一个好策略。你可能应该在一个列表中描述一些事情。如果您真的包含了一个新的解决方案,那么就更容易为一个更“类似R”的解决方案提出更好的建议。也许像

models <- lapply(resp$resp, function(r) {
  y <- response.data[,r]
  lm(y~., data=data.frame(y, modelpredictors))
})

谢谢,这真的很有帮助。
par(mfrow=c(2,3))
lapply(models, function(m) {
  plot(fitted(m), residuals(m))
})