我的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
}
}
我已尝试使用NA
和NULL
以及" "
进行以下操作,并在以下情况下继续获取错误:参数长度为零'
if(!missing(dateSelect)){
if(!dateSelect== "NA"){
selections[["dateEfforts"]] =
newEffortstable$effortNo[which(newEffortstable$date == dateSelect)]
}else{
selections[["dateEfforts"]] = newEffortstable$effortNo
}
}
谢谢!
答案 0 :(得分:4)
您还没有尝试过一个选项:检查长度。如果没有给出日期,dateInput
会返回一个空的Date
向量,如下例所示。
所以你可以检查if(length(input$dateSelect) == 0)
,但这不是最坚固的闪亮选项。为了避免您必须检查所有可能性(即NULL
,NA
,""
,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)})
}
)