如何拥有一个不过滤并显示所有变量的 SelectInput?

How to have a SelectInput that does not filter and shows all variables?

我有以下闪亮的应用程序 - 我的目标是在我的输入中有一个不过滤名为“全部”的选项。问题是我不知道如何编写“全部”函数的代码。我可以过滤到特定国家没问题,但是当我 select “全部”时,我得到一个空白图。

library(shinydashboard)
library(shiny)
library(ggplot2)
library(dplyr)


data <- data.frame(Country = c("France", "Germany","England","Spain"),
                   Count = c(10,12,15,9))

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(
    sidebarMenuOutput("menu")
  ),
  dashboardBody(
    fluidRow(
      box(plotOutput("plot1", height = 250)),
      box(selectInput("Dropdown","Select Country", c(data$Country, "All"))
      )
    )
  )
)
server <- function(input, output) {
  output$plot1 <- renderPlot({ 
    ggplot(data %>% 
             filter(Country == input$Dropdown),
           aes(x=Country, y=Count)) + 
      geom_bar(stat = "identity")
  })
}
shinyApp(ui, server)

这是我试过的一些代码,但它不起作用

server <- function(input, output) {
  output$plot1 <- renderPlot({ 
    ggplot(data %>% 
             filter{if (input$Dropdown == "All") data
               else (Country == input$Dropdown)} ,
           aes(x=Country, y=Count)) + 
      geom_bar(stat = "identity")
  })
}

当它是“全部”时你不应该过滤。试试这个

output$plot1 <- renderPlot({ 
    if (c("All") %in% input$Dropdown) df <- data
    else df <- data %>% filter(Country == input$Dropdown)
    ggplot(df, aes(x=Country, y=Count)) + 
      geom_bar(stat = "identity")
  })