r语言 - 按日期过滤反应变量时出现'comparison (5) is possible only for atomic and list types'反光错误



我正在尝试使用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”

任何人都可以帮忙吗?

我认为as.Date的问题在于您没有指定格式。试试这个:

as.Date(date, format = "%Y-%m-%d")

但我认为最好通过设置read.csv函数的参数来格式化reactiveFileReader日期colClasses。使用setAs可以创建此特定日期格式的方法:

setAs("character","myDate", function(from) as.Date(from, format="%Y-%m-%d") )
dat <- reactiveFileReader(
intervalMillis = 100000,  
NULL,
filePath = 'appData/data.csv',
readFunc = read.csv,
colClasses=c('myDate','numeric','numeric'),
header = TRUE
)

您可能很久以前就离开了这个问题,但看起来您需要在响应式中多加一组括号。

object <- reactive ({ (reactive_content) })

这似乎正在解决我的问题。

相关内容

最新更新