Я работаю с фреймом данных со многими столбцами и хотел бы создать определенные графики данных, используя ggplot2
, а именно коробчатые диаграммы, гистограммы, графики плотности. Я хотел бы сделать это, написав одну функцию, которая применяется ко всем атрибутам (столбцам), создавая одну коробчатую диаграмму (или гистограмму и т. Д. c), а затем сохраняя ее как заданный элемент списка, в который будут включены все коробчатые диаграммы. , поэтому я мог позже проиндексировать его по номеру (или по имени столбца), чтобы вернуть график для данного атрибута.
Проблема в том, что если я попытаюсь применить к столбцам что-то вроде apply(df,2,boxPlot)
, я должен определить boxPlot
как функцию, которая принимает только вектор x
. И когда я это сделаю, имя атрибута / столбца и индекс больше не сохраняются. Так, например, в коде для создания блочной диаграммы, например
bp <- ggplot(df, aes(x=Group, y=Attr, fill=Group)) +
geom_boxplot() +
labs(title="Plot of length per dose", x="Group", y =paste(Attr)) +
theme_classic()
, функция не знает, как извлечь информацию, необходимую для Attr, только из вектора x
(так как это только данные столбца и не t содержат имя столбца или индекс).
(Обратите внимание, что ось x - это факторная переменная, называемая «Группа», которая имеет 6 уровней A, B, C, D, E, F внутри X .)
Может кто поможет хорошим способом автоматизировать эту процедуру? (В идеале он должен работать для всех типов ggplots; проблема здесь, кажется, просто в том, как ссылаться на имя атрибута внутри функции ggplot таким образом, чтобы его можно было применять / автоматически реплицировать по столбцам.) A for-l oop было бы приемлемым, я думаю, но если есть более эффективный / лучший способ сделать это в R, я бы предпочел это!
Edit : что-то вроде того, что было бы достигается верхним ответом на этот вопрос: применить коробчатые диаграммы к нескольким переменным . За исключением того, что в этом ответе с его кодом вам все равно понадобится for
-l oop, чтобы изменить индексы y = y [2] в коде ggplot и получить all boxplots. Он также расширил сетку, чтобы включить различные возможности `` x '' (у меня есть только один, фактор группы), но было бы легко упростить его, если бы проблема зацикливания могла быть решена.
Я бы также предпочел просто базовый R, если это возможно - dplyr, если это абсолютно необходимо.