首页 > 解决方案 > 仅当非空值时,如何在输入和过滤数据中具有默认空值?

问题描述

期望的结果:我试图在默认情况下显示/绘制所有数据,默认情况下在 selectInut 中使用NULL 值,并且仅当在应用程序中选择了一些非空输入值时才过滤数据selectInput shiny

我在 selectInput() SO post中遇到了Force no default selection以将NULL 值添加到 中SelectInput,到目前为止,它仅对我部分起作用。

问题:它仅在我选择一些非 nulll 值时才有效,否则会产生空白输出(似乎if else 失败可能是由于 reactive()函数,但我不确定为什么会发生这种情况)。


下面的代码:

用户界面

selectInput(inputId = "vaccine_center_state_select",
                         label = "Select State to narrow your search", 
                         choices = c("",unique(vacc_centers$state))
                         ,selected = NULL 
                         ,multiple = FALSE
             ),

服务器:

filtered_vaccine_centers <- reactive({
    
    req(input$vaccine_center_state_select)
    
    if(!is.null(input$vaccine_center_state_select))
        
        {
            filtered_vaccine_centers <- vacc_centers %>% 
            filter(state == input$vaccine_center_state_select)
        
        }
    else filtered_vaccine_centers <- vacc_centers
        
    
    }) %>% 
        bindCache(input$vaccine_center_state_select)

标签: rshiny

解决方案


当我进行一些更改时它起作用了..不确定哪一个是因素

  1. 而不是null使用其他文本,即“未选择状态”并对其应用条件:
  2. 将数据框名称更改filtered_vaccine_centerfiltered_vaccine

用户界面

selectInput(inputId = "vaccine_center_state_select",
                         label = "Select State to narrow your search", 
                         choices = c("No State selected",unique(vacc_centers$state))
                         ,selected = "No State selected" 
                         ,multiple = FALSE
             ),

服务器:

filtered_vaccine_centers <- reactive({
    
    req(input$vaccine_center_state_select)
    
    if(input$vaccine_center_state_select != "No State selected")
        
        {
            filtered_vaccine <- vacc_centers %>% 
                                filter(state == input$vaccine_center_state_select)
        
        }
    else filtered_vaccine <- vacc_centers
        
    
    }) %>% 
        bindCache(input$vaccine_center_state_select)

不使用国家地图坐标的纬度、长轴上的疫苗接种中心点

输出

在此处输入图像描述


推荐阅读