Как использовать максимальную переменную в заголовке/подзаголовке сюжета с клеем в r?

У меня есть определяемая пользователем функция, которая вычисляет ежедневные случаи covid для данной страны и выдает фрейм данных:


fn_daily_cases <- function(Country_Name = India)
  {
  Country_Name <- rlang::quo_name(rlang::enquo(Country_Name))
  # above line will insert quote to the value in variable Country_Name
  
  df_gather %>% filter(Country.Region == Country_Name) %>% 
    mutate(daily_cases = abs(Cases_Count - lag(Cases_Count, default = 0))) %>% 
    # at beginning it will give 0 instead of NA
    
    arrange(desc(Date))
  
  } 

fn_daily_cases(Spain)

####### output ########

Country.Region Date   Cases_Count daily_cases
<chr>          <date> <int>       <dbl>

Spain   2020-12-11  1730575 10519   
Spain   2020-12-10  1720056 7955    
Spain   2020-12-09  1712101 9773    
Spain   2020-12-08  1702328 0   
Spain   2020-12-07  1702328 17681   
Spain   2020-12-06  1684647 0   
Spain   2020-12-05  1684647 0   
Spain   2020-12-04  1684647 8745    
Spain   2020-12-03  1675902 10127   
Spain   2020-12-02  1665775 9331    

Проблема: когда я пытаюсь построить этот фрейм данных с помощью другой функции, я не могу отобразить max( Cases_Count) в подзаголовке

library(glue)
library(tidyverse)

fn_daily_cases_plot <- function(country_selected = India) {
  
  fn_daily_cases({{country_selected}}) %>% 
  ggplot(aes(Date, y = daily_cases)) +
  geom_line(col = "midnightblue") +
  labs(title = glue("{quo_name(enquo(country_selected))} Daily Cases") ,
       subtitle = glue("Total cases so far: {max(Cases_Count)}" )
       ) +
  theme_light()
}

fn_daily_cases_plot(Spain)


##### output ######

Error in eval(parse(text = text, keep.source = FALSE), envir) : object 'Cases_Count' not found
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
826
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте сначала сохранить данные в отдельный tibblex а потом звонить max(x$Cases_Count).

fn_daily_cases_plot <- function(country_selected = India) {

  x <- fn_daily_cases({{country_selected}})

  ggplot(x, aes(Date, y = daily_cases)) + 
  geom_line(col = "midnightblue") +
  labs(title = glue("{quo_name(enquo(country_selected))} Daily Cases") , 
        subtitle = glue("Total cases so far: {max(x$Cases_Count)}" )) +
  theme_light() 
}

В любом случае, я не знаю, почему вы предпочитаете glue базовой альтернативе paste (см. также этот вопрос).

спасибо @Cettt, я не понимаю, почему это работает, назначая его x и затем max(x$Cases_Count), но это не работает с max(.$Cases_Count). Часто я не понимаю, как работает трубопровод R tidyverse. Во многих случаях .$variable работает, но иногда нет, поэтому для меня это остается пробным методом. Я новичок в R, и некоторые люди ранее показывали пример с клеем () в некоторых других вопросах, поэтому я начал использовать клей () вместо sprintf.

ViSa 13.12.2020 08:58

magrittr конвейер %>% интерпретирует правую часть как функцию и оценивает в левой части. В вашей версии кода вы используете только один канал: слева у вас есть фрейм данных, а справа у вас есть вызов функции ggplot. Таким образом, R рисует график на основе информации в фрейме данных. Если вы хотите разместить левый в другом месте вызова правого, я рекомендую прочитать сайт справки (см. ?%>%).

Cettt 13.12.2020 09:32

Другие вопросы по теме