У меня есть вложенный список ggplots, в котором каждый элемент списка будет объединен в cowplot :: plot_grid с 4 участками на сетку. Тем не менее, длина в моем списке графиков не делится на 4, поэтому мой список неровный. Таким образом, последний сюжет будет иметь только один сюжет. Мой список выглядит примерно так:
p.list <-
list(
list(ggplot(), ggplot(), ggplot(), ggplot()),
list(ggplot(), ggplot(), ggplot(), ggplot()),
list(ggplot())
)
Я попытался создать нижеприведенную функцию, чтобы построить каждую отдельную plot_grid и сохранить их в списке
gg.grid <- function (myList, pos) {
plot_grid(myList[[pos]][[1]],
myList[[pos]][[2]],
myList[[pos]][[3]],
myList[[pos]][[4]],
nrow = 2,
ncol = 2)
}
Далее я использую purrr :: map чтобы сопоставить gg.grid
с p.list
примерно так
n <- 1:3
plot.grid.list <- map(n, ~ gg.grid(p.list, .x))
Конечно, это возвращает Error in myList[[pos]][[2]] : subscript out of bounds
, потому что p.list[[3]]
это длина = 1, а не 4.
Кто-нибудь знает, как добавить этот последний сюжет? Моя цель состояла бы в том, чтобы plot_grid с одним графиком оставался в сетке из 4 графиков, но имел только 1 из 4 графиков.
Я планировал попытаться добавить операторы if_else()
в мои gg.grid()
функция для добавления пустых ggplot()
объектов к списку элементов с менее чем 4 элементами, но я подумал, что я спрошу здесь сначала.