如何将用户定义的值添加到数据集的选择值列表中

时间:2017-09-11 16:32:26

标签: r shiny

我是Shiny R的新手,作为项目的一部分,我必须在选择列表中显示不同的选择值,但我还需要提供一个名为" All"用。来查询。

dataset <- read.csv("dataset.csv", header=TRUE)
fluidPage(
  title = "ABC XYZ",
  hr(),
  fluidRow(
    titlePanel("ABC XYZ"),
    sidebarPanel(
selectInput("region", label = "Region", 
          choices = unique(dataset$region), 
          selected = 1)
 )
)

任何人都可以帮我实现同样的目标。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我们可以在level中创建额外的uniquechoices元素“全部”,并使用updateSelectInput更新

library(shiny)
library(DT)
library(dplyr)

#using a reproducible example
dataset <- iris
allchoice <- c("All", levels(dataset$Species))

-ui

ui <- fluidPage(
  title = "ABC XYZ",
  hr(),
  fluidRow(
    titlePanel("ABC XYZ"),
    sidebarPanel(
      selectInput("species", label = "Species", 
                  choices = allchoice, multiple = TRUE),
                 verbatimTextOutput("selected")
    ),
    mainPanel(dataTableOutput('out')))
  )

-server

server <- function(input, output, session) {
  observe({
    if("All" %in% input$species) {
      selected <- setdiff(allchoice, "All")
      updateSelectInput(session, "species", selected = selected)       

         }
    })

output$selected <- renderText({
  paste(input$species, collapse = ", ")

})

output$out <- renderDataTable({
     dataset %>%
            filter(Species %in% input$species)      

})

-run app

shinyApp(ui, server)

enter image description here

enter image description here