У меня есть eset с этой структурой (верхний набор - pData (данные), нижний - exprs (данные)). Метки SMP представляют собой образцы от субъектов с различными условиями. Цвета - это модули из WGCNA с соответствующими оценками.
ID age gender condition
SMP1 20 15 F healthy
SMP2 35 39 F healthy
SMP3 36 54 F diabetes
SMP4 73 43 M diabetes
SMP5 29 17 M influenza
SMP6 66 27 F influenza
SMP1 SMP2 SMP3 SMP4 SMP5 SMP6
blue 0.98 -0.42 0.21 -0.96 -0.92 0.44
black 0.43 0.88 0.23 0.59 0.32 -0.82
red 0.59 0.21 -0.16 -0.77 -0.49 0.33
На самом деле существует 12 групп болезней и одна здоровая группа, а также 9 различных модулей (каждый разного цвета)
Моя цель состоит в том, чтобы создать массив из 12 графиков, каждый из которых визуализирует оценки модуля от группы лиц с одним заболеванием и оценки модуля здоровых людей (пример: распределение показателей синего модуля для субъектов с диабетом и распределение модуля оценки здоровых людей, каждый на одном участке). И сделать этот массив из 12 графиков для каждого отдельного цвета модуля, чтобы здоровая группа всегда имела один и тот же цветовой график (поскольку ggplot2 будет выбирать цвета в алфавитном порядке).
Первоначально я слил pData (данные) и выражения (данные) из набора в один фрейм данных, вручную поместил поднабор фрейма данных для каждого сравнения заболевание / здоровье, а затем составил графики, используя следующий код:
ggplot(condition_v_healthy, aes(module_color, fill=condition)) +
geom_density(alpha = 0.5) + theme(legend.position="none") +
labs(x = "condition")
Похоже, что для этого требуется циклически проходить как по цветам модуля, так и по различным условиям, каждый раз сравнивая группу заболеваний со здоровыми.
Мне интересно, есть ли элегантный способ сделать это? Можно ли использовать purrr с пользовательской функцией? Я хотел бы избежать слияния pData (данных) и exprs (данных), но не уверен, возможно ли это.
Спасибо!