【问题标题】:QQline command works only on the last plotQQline 命令仅适用于最后一个图
【发布时间】:2015-02-23 16:55:28
【问题描述】:

下面的公式将 lm 应用于包含多个数据集的列表“dsets”并将输出存储在对象“模型”中。

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 迭代?

【问题讨论】:

    标签: r plot


    【解决方案1】:

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

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

    使用缩进代码的编辑器/IDE 会帮助您自己识别这一点。

    【讨论】:

    • 感谢 Roland - 您推荐使用什么编辑器?我在 Rstudio 中使用默认值
    • RStudio 默认缩进你的代码。 “代码”菜单中还有一项用于重新缩进代码。
    猜你喜欢
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 2013-03-03
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    相关资源
    最近更新 更多