2015-02-23 35 views
1

下面的公式将lm应用于包含多个数据集并将输出存储在对象“模型”中的列表“dsets”。QQline命令仅适用于最后一个绘图

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

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

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

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

+0

感谢罗兰 - 你会推荐使用哪种编辑器?我在Rstudio中使用默认值 – oivemaria 2015-02-23 17:15:49

+0

默认情况下,RStudio缩进您的代码。 “代码”菜单中还有一个项目用于重新加载代码。 – Roland 2015-02-23 17:17:10

相关问题