如果选择了每个选项,则仅在Shiny中过滤

问题描述 投票:0回答:1

我终于想出了如何让情节对用户输入作出反应......不幸的是,用户需要选择年份范围,高尔夫球手和球场。我希望他们只能按年和高尔夫球手进行过滤,或者只需要年份和球场进行过滤即可。如何修复我的代码,以便即使没有填写某些内容也会返回该图?任何帮助将不胜感激,因为我还是很新的!谢谢!

Define server logic required to draw a histogram

    server <- function(input, output, session) {

    updateSelectizeInput(session, inputId = 'golfer', choices = dkDatabase$Golfer, selected = "Woodland, Gary", server = TRUE)
    updateSelectizeInput(session, inputId = 'course', choices = dkDatabase$Course, server = TRUE)

    output$points <- renderPlot({
    dkDatabase %>%
    filter(dkDatabase$Year >= input$year[1],
         dkDatabase$Year <= input$year[2],
         dkDatabase$Golfer == input$golfer,
         dkDatabase$Course == input$course) %>%
    ggplot(aes(dkPoints)) + geom_histogram(fill="green", colour = "black") +
    xlab("DK Points") +
    ylab("Events")
  })
}
r shiny
1个回答
0
投票

没有看到更多的代码我无法真正测试这个,但它应该工作一些小的修改。

在ui代码中,设置默认选择输入:

selectInput(..., Choose = '')

然后在你的服务器端代码添加一个if语句(如果你要使用单引号,双引号或null测试所有这些,并且1应该工作),不能回想起我的头脑:

if (input$golfer == '') {
dkDatabase %>% 
filter(dkDatabase$Year >= input$year[1],
         dkDatabase$Year <= input$year[2], 
         dkDatabase$Course == input$course)
} 
else if (input$Course == ''){
dkDatabase %>%
filter(dkDatabase$Year >= input$year[1],
         dkDatabase$Year <= input$year[2], 
         dkDatabase$Golfer == input$golfer)
}
else {
dkDatabase %>%
    filter(dkDatabase$Year >= input$year[1],
         dkDatabase$Year <= input$year[2], 
         dkDatabase$Golfer == input$golfer,
         dkDatabase$Course == input$course)
}

output$points <- renderPlot({
    ggplot(aes(dkPoints())) + geom_histogram(fill="green", colour = "black") +
    xlab("DK Points") +
    ylab("Events")
  })

如果没有在上面输入年份,我没有说明要做什么,但我要做的是自动设置开始和结束日期以包括所有数据,然后用户可以根据需要进行更改。

© www.soinside.com 2019 - 2024. All rights reserved.