2015-02-23 3 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

благодарит Roland - какой редактор вы бы рекомендовали использовать? Я использую значение по умолчанию в Rstudio – oivemaria

+0

RStudio по умолчанию откладывает ваш код. В меню «Код» также есть элемент для повторного ввода кода. – Roland

Смежные вопросы