Основываясь на этом вопросе, я хотел бы добавить геометрию к полученному графику по строкам после того, как я распаковал data.frame, чтобы получить график для каждой строки с выделенными данными строки внутри группы.
library(tidyverse) # using version 1.3.0
mydata <- data_frame(group = c('a', 'a', 'a', 'b', 'b', 'b'),
x = c(1,2,3,5,6,7),
y = c(3,5,6,4,3,2))
mydata2 <- mydata %>%
group_by(group) %>%
nest() %>%
mutate(myplot = map(data, ~ggplot(data = .x, aes(x = x, y = y)) + geom_point()))
mydata2
# A tibble: 2 x 3
# Groups: group [2]
group data myplot
<chr> <list> <list>
1 a <tibble [3 x 2]> <gg>
2 b <tibble [3 x 2]> <gg>
Желаемый результат для первой строки:
mydata2$myplot[[1]] + geom_point(mapping = aes(x=1,y=3),color = "red")
Однако при попытке реализовать это на невложенном data.frame я терплю неудачу. Вот мои три попытки и их результаты:
mydata3 <- mydata2 %>%
unnest(data) %>%
mutate(myplot2 = myplot + geom_point(mapping = aes(x=x,y=y),color = "red"))
mydata3$myplot2[[1]]
NULL
Warning message:
Unknown or uninitialised column: `myplot2`.
mydata4 <- mydata2 %>%
unnest(data) %>%
mutate(myplot2 = list(myplot[[1]] + geom_point(mapping = aes(x=x,y=y),color = "red")))
mydata4$myplot2[[1]]
Все точки стали красными! Я получил тот же результат для этой попытки:
mydata5 <- mydata2 %>%
unnest(data) %>%
mutate(myplot2 = map(myplot,~.x + geom_point(mapping = aes(x=x,y=y),color = "red")))
mydata5$myplot2[[1]]
Итак, мой вопрос: есть ли способ получить первый сюжет, используя тидиверс?