Я пытаюсь написать функцию, которая будет генерировать несколько гистограмм (по одной для каждого уровня фактора), используя ggplot.
Для набора данных, который я использую, я создал матрицу графиков, используя facet_wrap
, но у меня есть 15 уровней для моего фактора, и значения для каждого уровня сильно различаются для каждого бина, поэтому матрица гистограмм была не очень полезна, потому что я вынужден просматривать каждую гистограмму в одном и том же масштабе (например, одинМаксимальный счет для уровня составлял ~ 4000, в то время как для другого уровня был максимальный счет ~ 100).
Ниже приведено то, что я пытаюсь выполнить, используя набор данных iris
в качестве примера.
data(iris)
library(tidyverse)
histo_func = function(df){
species_list = unique(df$Species) #create a vector of levels for Species
for (i in seq_along(species_list)) {
species_plot = ggplot(subset(df, df$Species==species_list[i]),
aes(Sepal.Length)) +
geom_histogram()
}
}
species_hist = histo_func(df = iris)
species_hist
NULL
После запуска функции я вызываю species_hist
и получаю NULL.
Сама функция работает - если я перейду через debugonce()
, я могу вызвать species_plot
и получить гистограмму для любого из нихi
В этой точке цикл циклически прошел.
Что я хочу (если возможно), так это сохранять гистограммы в species_hist
и иметь возможность выводить все гистограммы подряд после вызова species_hist
.
Заранее спасибо за любой вклад.