使用selectinput的Rshiny子集数据包括" all"选项

时间:2017-03-09 14:03:02

标签: r shiny

在Rshiny UI中,我有两个selectinputs years和tunnel:

selectInput("years", "Year", seq(min(df_map$jaar),max(df_map$jaar),1), selected = max(df_map$jaar), multiple = FALSE),
selectInput("tunnel", "Tunnel", c("ALL", sort(unique(df_map$tunnelnaam))), multiple = FALSE)

在Rshiny Server中我想按如下方式进行分组,以便我可以选择所有隧道以及单个隧道:

filteredData <- reactive({
    if(input$tunnel == "ALL") {
      subset(df_map, jaar %in% input$years)
    }
    if(input$tunnel != "ALL") {
      subset(df_map, jaar %in% input$years & tunnelnaam %in% input$tunnel)
    }
  })

但是在选择ALL时出现以下错误:

addCircleMarkers requires non-NULL longitude/latitude values

当选择所有隧道时,似乎filteredData()不起作用。有没有人知道如何在Rshiny中选择所有隧道以及单个隧道?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果没有可重复的示例和样本数据,很难说出来!

我可以建议尝试:

filteredData <- reactive({
    if(input$tunnel == "ALL") {
      subset(df_map, jaar %in% input$years)
    else{
      subset(df_map, jaar %in% input$years & tunnelnaam %in% input$tunnel)
    }
  })

 filteredData <- reactive({
        if(input$tunnel != "ALL"){
          subset(df_map, jaar %in% input$years & tunnelnaam %in% input$tunnel)
        else{
subset(df_map, jaar %in% input$years)
        }
  })

答案 1 :(得分:0)

我用一个复选框解决了这个问题&#34;显示所有隧道&#34;在用户界面中:

UI:

checkboxInput("show_all_tunnels", "Show all tunnels", TRUE)

服务器:

filteredData <- reactive({
    if(input$show_all_tunnels) df_map[df_map$jaar == input$years,] else df_map[df_map$jaar == input$years & df_map$tunnelnaam == input$tunnels,]
  })