下面的公式将lm应用于包含多个数据集的列表'dsets',并将输出存储在对象'models'中。
models<-lapply(dsets,function(data){
lm(reformulate(termlabels=".",response=names(data)[1]),data)
})
我创建了这个函数来为存储在对象'模型'中的每个模型输出绘制qqplot但是它不起作用
rstest<-function(x){
for (i in 1:length(x))
qqnorm(residuals(x[[i]]))
qqline(residuals(x[[i]]))
}
rstest(models)
我得到了图,但qqline仅适用于最后一个图,并非所有图都生成。我的函数中缺少什么不能使qqline迭代?
答案 0 :(得分:0)
仅循环for(...)
之后的第一个表达式。在for
中包裹{}
循环的主体以组合这两个表达式。
rstest <- function(x) {
for (i in seq_along(x)) {
qqnorm(residuals(x[[i]]))
qqline(residuals(x[[i]]))
}
}
rstest(models)
使用缩进代码的编辑器/ IDE可以帮助您自己识别它。