【问题标题】:R: Specifying dates between dateRangeInput - "Error in seq.int: 'to' must be a finite number"R:在 dateRangeInput 之间指定日期-“seq.int 中的错误:'to' 必须是有限数”
【发布时间】:2020-07-23 09:38:50
【问题描述】:

我正在尝试在 Shiny R 中定义用户指定日期范围之间的日期。我使用的是 R 版本 3.6.2。但是,我收到一个错误:

seq.int 中的错误:'to' 必须是有限数

当我将开始和结束日期值输入到 seq 函数时。当我硬编码测试开始和结束日期时,seq 工作正常。下面指定了代码的 sn-ps,非常感谢任何解决问题的建议。

UI 输入小部件代码部分

dateRangeInput("date_range","Select Date Range",start = "NA",end = "NA",format="%Y-%m-%d")) ## For Date Range

div(DT::dataTableOutput("test_table"),style="width:50%;") ## For plotting table to check results

服务器

observeEvent(input$date_range,{

  mins<- as.Date(input$date_range[1],format="%Y-%m-%d")
  maxs<- as.Date(input$date_range[2],format="%Y-%m-%d")

 dates <- seq(from=mins, to= maxs,by = 1)

 output$test_table <- DT::renderDataTable(
   data.frame(dates),

   rownames = FALSE,
   options = list(searching = FALSE, pageLength = 5,lengthChange = FALSE)

 )
})

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    @杰,

    一些事情可能会有所帮助:

    • ui 中,我可能会使用as.Date(NA) 作为您的默认startend 以确保Date 格式。您可以使用 dateRangeInput 的默认格式,它已经是 yyyy-mm-dd
    • server 中,检查您的input$date_range 以确保不是您开始使用的NA。这将避免给seq 一个NA 值来触发您的错误。
    • 您也可以将observeEvent 设为eventReactive 表达式,然后将output 去掉,这样更可取

    工作示例:

    library(shiny)
    library(DT)
    
    ui <- fluidPage(
      dateRangeInput("date_range","Select Date Range",start=as.Date(NA),end=as.Date(NA)), ## For Date Range
      div(DT::dataTableOutput("test_table"),style="width:50%;") ## For plotting table to check results
    )
    
    server <- function(input, output, session) {
    
      dates <- eventReactive(input$date_range, {
        if (is.na(input$date_range[1]) | is.na(input$date_range[2])) return (NULL)
    
        mins<- as.Date(input$date_range[1],format="%Y-%m-%d")
        maxs<- as.Date(input$date_range[2],format="%Y-%m-%d")
    
        dates <- seq(from=mins, to=maxs, by = 1)
      })
    
      output$test_table <- DT::renderDataTable(
        data.frame(dates()),
        rownames = FALSE,
        options = list(searching = FALSE, pageLength = 5,lengthChange = FALSE)
      )
    
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 亲爱的 Ben, 非常感谢您抽出宝贵时间回复并帮助我。它确实有效,根据您的指南,我现在明白这是由于 'NA' 被输入到 'seq' 并更好地使用 eventReactive 来返回值。再次感谢。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多