R使用selectInput忽略占位符标签/值筛选



UI

selectInput("marital_status", "Marital Status: ", choices = c("SELECT", setNames(marital_status$m_id,marital_status$m_name)))

服务器

selected_members <- reactive(

tmk %>% filter(between(AGE, input$age[1], input$age[2])) %>% 
filter(between(ROOMS, input$room[1], input$room[2])) %>% 
filter(between(PMT, input$pmt[1], input$pmt[2])) %>% 
filter(MARITAL_STATUS %in% input$marital_status)
)

当前MARITAL_STATUS上的最后一个过滤器导致selected_members数据帧中的0,因为在输入$MARITAL_STATUS处的selectInput返回值初始化为"0";SELECT";当应用程序第一次运行时;占位符"/"默认";过滤器中的选择将被忽略,我不太确定确切的格式,如果有任何帮助,将不胜感激!

第页。S: 代码适用于带有MARITAL_STATUS输入值/选择的单个选择

只需在reactive中的第一行添加一个req。记住用{}将你的表情包裹在reactive

selected_members <- reactive({
req(input$marital_status != "SELECT")
tmk %>% filter ...
})

如果您想要"过滤器";初始忽略占位符文本并仅在用户做出任何有效选择时进行搜索(或者在这种情况下返回占位符文本,返回更大的数据集,即跳过过滤器)

tmk %>% filter(between(AGE, input$age[1], input$age[2])) %>% 
filter(between(ROOMS, input$room[1], input$room[2])) %>% 
filter(between(PMT, input$pmt[1], input$pmt[2])) %>%
{if(input$marital_status != "SELECT") filter(., MARITAL_STATUS == input$marital_status) else .}

最新更新