Показать неконтролируемый вывод на основе выбранного диапазона дат
Я не могу использовать диапазон дат, чтобы выборочно отображать непредсказуемые результаты. При запуске приложения значения диапазона дат по умолчанию не выбираются, что приводит к ошибке выдачи значения NULL.
Посоветуйте, пожалуйста, как я могу это исправить.
library(shiny)
library(lubridate)
library(rhandsontable)
ui <- shinyUI(fluidPage(
mainPanel(
uiOutput("date_range"),
br(),
rHandsontableOutput("hot")
)
)
)
server <- shinyServer(function(input, output){
start_date <- as.Date(dmy("01-Jan-2018"), tz = "UTC")
end_date <- as.Date(dmy("10-Jan-2018"), tz = "UTC")
DF <- data.frame(Date = seq.Date(start_date, end_date, by = 1),
value = 1:10, stringsAsFactors = FALSE)
output$date_range <- renderUI({
fluidRow(
dateRangeInput(inputId = "dates", label = paste0("Enter Date Range"), start = start_date + 1, end = end_date - 1,
min = start_date, max = end_date, format = "dd-mm-yyyy")
)
})
DF_selected <- reactive({
date_vec <-DF$Date
out <- DF[which((date_vec >= input$dates[1]) & (date_vec <= input$dates[2])),]
return(out)
})
hot_mat <- reactive({
if(is.null(input$hot)){
DF = DF_selected()
}else{
DF = hot_to_r(input$hot)
}
return(DF)
})
output$hot <- renderRHandsontable({
DF_out <- hot_mat()
rhandsontable(DF_out, useTypes = TRUE) %>% hot_col(col = 1, readOnly = TRUE)
})
})
runApp(list(ui=ui, server=server))
1 ответ
Это похоже на работу:
server <- shinyServer(function(input, output){
start_date <- as.Date(dmy("01-Jan-2018"), tz = "UTC")
end_date <- as.Date(dmy("10-Jan-2018"), tz = "UTC")
DF <- data.frame(Date = seq.Date(start_date, end_date, by = 1),
value = 1:10, stringsAsFactors = FALSE)
output$date_range <- renderUI({
fluidRow(
dateRangeInput(inputId = "dates", label = paste0("Enter Date Range"), start = start_date + 1, end = end_date - 1,
min = start_date, max = end_date, format = "dd-mm-yyyy")
)
})
DF_selected <- reactive({
date_vec <-DF$Date
out <- DF[which((date_vec >= input$dates[1]) & (date_vec <= input$dates[2])),]
return(out)
})
output$hot <- renderRHandsontable({
DF_out <- DF_selected()
rhandsontable(DF_out, useTypes = TRUE) %>% hot_col(col = 1, readOnly = TRUE)
})
})
runApp(list(ui=ui, server=server))