在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))
})