Я пытаюсь использовать dateRangeInput для фильтрации и обобщения некоторых данных. Я получаю следующую ошибку:
Warning: Error in >=.default: comparison (5) is possible only for atomic and list types
Мой код:
library(shiny)
library(shinydashboard)
library(tidyverse)
dat <- reactiveFileReader(
intervalMillis = 100000,
NULL,
filePath = 'appData/data.csv',
readFunc = read.csv,
header = TRUE
)
header <- dashboardHeader(title = "figures")
sidebar <- dashboardSidebar(uiOutput('sidebar'))
body <- dashboardBody(shinyjs::useShinyjs(),uiOutput("body"))
fluidRow1 <- fluidRow(
infoBoxOutput("calls")
)
ui <- dashboardPage(title = 'figures', header, sidebar, body, skin='blue')
server <- function(input, output, session){
overall <- reactive({
dat() %>%
filter(date >= input$dates[1]) %>%
filter(date <= input$dates[2]) %>%
select(-date) %>%
summarise_all(.funs = sum, na.rm = TRUE)
})
output$body <- renderUI({
tabItems(
tabItem(tabName = 'overall', class = 'active', h2(fluidRow1))
)})
output$sidebar <- renderUI({
sidebarMenu(
menuItem("Overall", tabName = "overall", icon = icon("adjust"),
menuSubItem(icon = NULL,
dateRangeInput(inputId = 'dates',
label = 'Range:',
start = '2019-10-03',
end = '2019-10-10'
))
))
})
output$calls <- renderInfoBox({
infoBox(
"Total Calls", overall()[1,1], icon = icon("list"),
color = "purple"
)
})
}
shinyApp(ui = ui, server = server)
Мои данные выглядят так:
date recordsCreated optionsCreated
1 2019-03-08 NA NA
2 2019-03-08 NA NA
3 2019-03-08 NA 1
4 2019-03-08 NA NA
5 2019-03-08 NA NA
6 2019-03-08 5 2
7 2019-03-08 8 6
8 2019-03-08 NA NA
9 2019-03-08 4 3
10 2019-03-08 NA NA
Таким образом, похоже, что столбец даты на самом деле является фактором, поэтому я попытался изменить его на фактическую дату, изменив фильтр на
overall <- reactive({
dat() %>%
filter(as.Date(date) >= input$dates[1]) %>%
filter(as.Date(date) <= input$dates[2]) %>%
select(-date) %>%
summarise_all(.funs = sum, na.rm = TRUE)
})
, что дает ошибку
Warning: Error in as.Date.default: do not know how to convert 'x' to class “Date”
Может кто-нибудь помочь с этим, пожалуйста?