【问题标题】:How to detect a blank input for a date in Shiny如何在 Shiny 中检测日期的空白输入
【发布时间】:2017-07-12 14:02:33
【问题描述】:

我的 R Shiny 应用程序中有一系列输入,我将它们用作函数的参数,以从数据框中选择特定数据。输入之一是 dateInput:

dateInput("dateSelect", "Date", format = "yyyy-mm-dd", value = NA)

在我的函数中,我需要指定 dateSelect 是空白还是未选中,才能选择所有日期。查看一个正常工作的示例,它不是日期,以及一个简单的 selectInput:

selectInput("teamSelect", "Team", choices = c("All", levels(newEffortstable$team)))

在函数中,这可以选择“所有团队”:

    if(!missing(teamSelect)){
    if(teamSelect!="All"){
    selections[["teamEfforts"]] = 
    newEffortstable$effortNo[which(newEffortstable$team %in% teamSelect)]
    }else{
    selections[["teamEfforts"]] = newEffortstable$effortNo
    }
    }

我已尝试使用 NANULL" " 进行以下操作,并不断收到“如果:参数长度为零时出错”

    if(!missing(dateSelect)){
    if(!dateSelect== "NA"){
    selections[["dateEfforts"]] = 
    newEffortstable$effortNo[which(newEffortstable$date == dateSelect)]
    }else{
    selections[["dateEfforts"]] = newEffortstable$effortNo
    }
    }

谢谢!

【问题讨论】:

  • 检查函数validateneed以及闪亮中的truthyfalsy的概念。
  • 谢谢。我已经阅读了这些内容,但我不确定他们是否需要我需要...日期)...然后使用此参数从数据框中选择我需要的相关数据?
  • 我添加了一个答案,说明如何弄清楚你需要什么以及如何使用函数isTruthy

标签: r date shiny


【解决方案1】:

您还没有尝试过一个选项:检查长度。如果没有给出日期,dateInput 会返回一个空的 Date 向量,如下例所示。

所以你可以检查if(length(input$dateSelect) == 0),但这不是最可靠的闪亮选项。为了避免您必须检查所有可能性(即NULLNA""numeric(0) 等),您可以使用函数isTruthy(),如下例所示:

shinyApp(
  ui = fluidPage(
    dateInput("dateSelect","Date"),
    verbatimTextOutput("out"),
    textOutput("text")
  ),
  server = function(input,output,session){

    output$text <- renderText({
      if(!isTruthy(input$dateSelect)){
        "NO DATE"
      } else {
        paste("The chosen date is:",input$dateSelect)
      }
    })
    output$out<- renderPrint({str(input$dateSelect)})
  }
)

【讨论】:

  • 谢谢。我没想过要检查长度……那行得通。但我会听取您的建议,检查 Shiny 中的所有可能性并使用 isTruthy 功能 - 也可以完成这项工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-07
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多