【问题标题】:Change date format in R Shiny daterangeinput在 R Shiny daterangeinput 中更改日期格式
【发布时间】:2021-02-16 01:18:57
【问题描述】:

我正在构建一个应用程序,用户可以在其中按日期过滤数据。然后,我想以月、日、年的格式显示“您正在查看从 start_date 到 end_date 的数据”的反应性文本。不幸的是,shiny 的 daterangeInput 默认为年、月、日。

我试过了

    start_date <- reactive({
        format(as.Date(input$date_filter[1]), "%d/%m/%Y")})

但我收到此错误并且应用程序崩溃:

Warning: Error in as.vector: cannot coerce type 'closure' to vector of type 'character'
  [No stack trace available]

有什么想法吗?这是日期范围输入。我也尝试过更改开始日期的格式,但这会弄乱日期。谢谢!

library(shiny)


ui <- fluidPage(
  
  dateRangeInput(
        inputId = "date_filter",
        label = "Filter by Date",
        start = "2020-01-01",
        end = NULL,
        min = "2020-01-01",
        max = NULL,
        format = "m-d-yyyy",
        startview = "month",
        weekstart = 0,
        language = "en",
        separator = " to ",
        width = NULL,
        autoclose = TRUE
      ))

shinyApp(ui, server = function(input, output) {
  
})
~~~~

【问题讨论】:

    标签: r text shiny lubridate


    【解决方案1】:

    你可以使用:

    library(shiny)
    
    ui <- fluidPage(
      
      dateRangeInput(
        inputId = "date_filter",
        label = "Filter by Date",
        start = "2020-01-01",
        end = NULL,
        min = "2020-01-01",
        max = NULL,
        format = "m-d-yyyy",
        startview = "month",
        weekstart = 0,
        language = "en",
        separator = " to ",
        width = NULL,
        autoclose = TRUE
      ), 
      
      textOutput('text')
      )
    
    shinyApp(ui, server = function(input, output) {
      output$text <- renderText({
        x <- format(input$date_filter, "%d/%m/%Y")
        sprintf("You're viewing data from %s to %s", x[1], x[2])
      })
    })
    

    【讨论】:

    • 谢谢!不幸的是,我并没有尝试渲染文本,而是使用官员包将其打印在幻灯片上。当我在官员的 ftext 参数中尝试这种格式时,我收到一个错误,我无法在此处执行此操作:title
    • 我没有使用过officer 包,但您在代码中缺少"。使用title &lt;- ftext(paste0("Data from ", "(", input$date_filter[2], " - ", input$date_filter[2], ")"))。它有帮助还是仍然返回错误?
    • 这就是我原来的样子。它将日期输出为“2020-01-01”。我怎样才能获得可用于此 paste0() 的输出(例如 1-01-2020)?
    • 你试过title &lt;- ftext(paste0("Data from (", format(input$date_filter[2], "%d/%m/%Y"), " - ", format(input$date_filter[2], "%d/%m/%Y"), ")")) 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 2015-03-03
    • 2011-11-18
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多