QQline命令仅适用于最后一个情节

时间:2015-02-23 16:55:29

标签: r plot

下面的公式将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迭代?

1 个答案:

答案 0 :(得分:0)

仅循环for(...)之后的第一个表达式。在for中包裹{}循环的主体以组合这两个表达式。

rstest <- function(x) {
  for (i in seq_along(x)) {
    qqnorm(residuals(x[[i]]))
    qqline(residuals(x[[i]]))
  }
}
rstest(models)

使用缩进代码的编辑器/ IDE可以帮助您自己识别它。