Как обернуть «имя уровня фактора» в функцию «агрегат»? - PullRequest
1 голос
/ 06 мая 2020
> levels(iris$Species)
[1] "setosa"     "versicolor" "virginica" 

Я планирую использовать приведенные выше имена как xlab в скриптах, как показано ниже:

aggregate(Sepal.Length~Species,iris,function(x){
        car::qqPlot(x,distribution="norm",xlab="names(x)")
})

20200507002255276.jpg

После qqPlot я обнаружил, что xlab не решено.

Общие вопросы:
Как обернуть factor level name в aggregate функцию как aggregate(y~factor,df,function(x){factor level name})?

1 Ответ

1 голос
/ 06 мая 2020

Вот два пути, я думаю, вопрос задает второй. Ни один из этих двух не требует 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...