Добавление сгруппированного имени переменной на график с group_nest и map - PullRequest
0 голосов
/ 14 октября 2019

Вероятно, это вопрос синтаксиса. Вот проблема, воссозданная с некоторыми фиктивными данными.

Я работаю с большим набором данных, и я хочу выполнить group_nest, а затем создать несколько графиков с названием группы. Все идет хорошо, пока название не повторяется.

library(tidyverse)

N <- 30
df <- tibble(type = rep(c("small","medium","high"), each=N/3),
             dummy = rep(c(1,5,10),each=10),
             xvals = rep(1:10,3),
             A = rnorm(N)*dummy,
             B = rnorm(N)*dummy,
             C = rnorm(N)*dummy) %>%
  mutate(type = factor(type, levels=c("small","medium","high"))) %>%
  pivot_longer(cols=-c(type,xvals), names_to="metric", values_to = "value") %>%
  group_by(type) %>%
  group_nest(.key="data") %>%
  mutate(gplot = map(data, ~ggplot(data=.x, aes(x=xvals,y=value))+
                       geom_point() +
                       facet_grid(rows=vars(metric)) +
                       ggtitle(paste0(type) ## THIS IS WHERE THE PROBLEM IS ##
                      )))

#view the plots
df$gplot[[1]] #has title "small"
df$gplot[[2]] #has title "small", should be "medium"
df$gplot[[3]] #has title "small", should be "large"

Вот что я получаю: enter image description here

Это то, что я хочу: enter image description here

1 Ответ

1 голос
/ 14 октября 2019

Может попробовать вместо map2?

df <- tibble(type = rep(c("small","medium","high"), each=N/3),
                         dummy = rep(c(1,5,10),each=10),
                         xvals = rep(1:10,3),
                         A = rnorm(N)*dummy,
                         B = rnorm(N)*dummy,
                         C = rnorm(N)*dummy) %>%
    mutate(type = factor(type, levels=c("small","medium","high"))) %>%
    pivot_longer(cols=-c(type,xvals), names_to="metric", values_to = "value") %>%
    group_by(type) %>%
    group_nest(.key="data") %>%
    mutate(gplot = map2(data,type, ~ggplot(data=.x, aes(x=xvals,y=value))+
                                            geom_point() +
                                            facet_grid(rows=vars(metric)) +
                                            ggtitle(.y ## THIS IS WHERE THE PROBLEM IS ##
                                            )))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...