нет применимого метода для ‘group_by_’, применяемого к объекту класса «NULL» в dplyr

#r #shiny #dplyr

#r #блестящий #dplyr

Вопрос:

Я разрабатываю блестящее приложение для агрегирования данных, в котором значения извлекаются из базы данных, а агрегирование производится с помощью пакета dplyr. Изначально, когда нет данных, мне нужно обработать эту ошибку лучшим способом, показав zero значение на экране или NA value вместо этой ошибки красным цветом no applicable method for 'group_by_' applied to an object of class "NULL"

 output$Regbycity <- renderValueBox({
valueBox(

  value = reg_city()$Total[1],
  subtitle = reg_city()$registrant_city[1],
  icon = icon("globe"),
  color = "light-blue"
)
})

 reg_city <- function(){
   final_data %>% 
     group_by(registrant_city) %>%
     summarise(Total= n()) %>% 
     arrange(desc(Total)) %>% 
     top_n(n=15)

  }
  

В приведенном выше коде значение object ничего не пропускает, поскольку в базе данных ничего нет, и это строка, в которой отображается ошибка на блестящей панели мониторинга, от которой я хочу избавиться. Пожалуйста, помогите..

Ответ №1:

Просто добавьте функцию, подобную этой….

 if.is.empty <- function(x){
    is.null(need(x, message = FALSE))}
  

и ваши коды выглядят примерно так….

 reg_city <- function(){
    if (if.is.empty(final_data)) {
        final_data %>% 
        group_by(registrant_city) %>%
        summarise(Total= n()) %>% 
        arrange(desc(Total)) %>% 
        top_n(n=15)}
}
  

Примечание. Просто будьте осторожны с отступом…

Это сработало для меня в блестящем приложении, когда оно запускается без информации.