我正在编写一个应用程序,允许用户选择日期范围,然后图表会相应更改。但是,我的 filter() 函数出现了问题。如果我对日期进行硬编码,即 y >= '6/11/2024' & y <= '6/13/2024',应用程序运行正常。但是,当我尝试使用 input$data_range 使过滤器具有反应性时,图表显示为空白。我尝试将数据框列和输入包装在 as.Date 中,但我的图表仍然显示为空白。
library(shiny)
library(ggplot2)
library(dplyr)
ui <- fluidPage(
dateRangeInput('date_range', 'Pick Range',
start = '2024-06-11',
end = '2024-06-13',
min = '2024-06-11',
max = '2024-06-15'),
actionButton('run', 'Run'),
plotOutput('plot')
)
server <- function(input,output){
data_input <- structure(list(length = 0:4, sec = c("00:00.0", "00:01.0", "00:02.0", "00:03.0", "00:04.0"), time = c(30L, 40L, 50L, 60L, 70L), colors = c(5L, 5L, 5L, 5L, 5L), y = c("6/11/2024", "6/12/2024", "6/13/2024", "6/14/2024", "6/15/2024")), row.names = c(NA, 5L), class = "data.frame")
data_filtered <- eventReactive(input$run,
filter(data_input, as.Date(y) >= as.Date(input$date_range[1]) & as.Date(y) <= as.Date(input$date_range[2]))
)
output$plot <- renderPlot(
ggplot(data_filtered(), aes(x = y, y = time))+geom_point()
)
}
shinyApp(ui = ui, server = server)