Вот два пути, я думаю, вопрос задает второй. Ни один из этих двух не требует aggregate
.
1. Первый способ - напрямую использовать интерфейс формулы. Он помещает все графики на одну страницу / график.
car::qqPlot(Sepal.Length ~ Species, data = iris, distribution = "norm")
2. Второй способ разбивает набор данных по уровням фактора, а затем lapply
анонимный функция для построения каждого графика QQ отдельно.
sp <- split(iris, iris$Species)
lapply(seq_along(sp), function(i){
sp[[i]]$Species <- droplevels(sp[[i]]$Species)
car::qqPlot(Sepal.Length ~ Species, data = sp[[i]],
distribution = "norm", xlab = names(sp)[i])
})
rm(sp) # final clean up