как использовать флажки в качестве выборочных категорий

#r #shiny

Вопрос:

Ниже приведен пример мутировавшего iris набора данных, в котором некоторые виды, по-видимому, представляют собой смесь двух видов.

Я хотел бы выполнить следующее:

1: Я не могу понять , как заставить флажки функционировать в species column , флажок all работает нормально, но остальные флажки не работают. Где может быть проблема в моем коде?

2: Когда я выбираю один из видов, я хотел бы, чтобы он исключал все записи, в которых упоминается этот вид. Как бы я реализовал это в своем коде?

 irismut lt;- data.frame(  stringsAsFactors = FALSE,  ï..Sepal.Length = c(5.1,4.9,4.7,4.6,5,5.4,4.6,  5,4.4,4.9,5.4,4.8,4.8,4.3,5.8,5.7,5.4,5.1,  5.7,5.1,5.4,5.1,4.6,5.1,4.8,5,5,5.2,5.2,4.7,4.8,  5.4,5.2,5.5,4.9,5,5.5,4.9,4.4,5.1,5,4.5,4.4,  5,5.1,4.8,5.1,4.6,5.3,5,7,6.4,6.9,5.5,6.5,  5.7,6.3,4.9,6.6,5.2,5,5.9,6,6.1,5.6,6.7,5.6,5.8,  6.2,5.6,5.9,6.1,6.3,6.1,6.4,6.6,6.8,6.7,6,  5.7,5.5,5.5,5.8,6,5.4,6,6.7,6.3,5.6,5.5,5.5,6.1,  5.8,5,5.6,5.7,5.7,6.2,5.1,5.7,6.3,5.8,7.1,  6.3,6.5,7.6,4.9,7.3,6.7,7.2,6.5,6.4,6.8,5.7,5.8,  6.4,6.5,7.7,7.7,6,6.9,5.6,7.7,6.3,6.7,7.2,6.2,  6.1,6.4,7.2,7.4,7.9,6.4,6.3,6.1,7.7,6.3,6.4,  6,6.9,6.7,6.9,5.8,6.8,6.7,6.7,6.3,6.5,6.2,5.9),  Sepal.Width = c(3.5,3,3.2,3.1,3.6,3.9,3.4,  3.4,2.9,3.1,3.7,3.4,3,3,4,4.4,3.9,3.5,3.8,  3.8,3.4,3.7,3.6,3.3,3.4,3,3.4,3.5,3.4,3.2,3.1,  3.4,4.1,4.2,3.1,3.2,3.5,3.6,3,3.4,3.5,2.3,3.2,  3.5,3.8,3,3.8,3.2,3.7,3.3,3.2,3.2,3.1,2.3,2.8,  2.8,3.3,2.4,2.9,2.7,2,3,2.2,2.9,2.9,3.1,3,  2.7,2.2,2.5,3.2,2.8,2.5,2.8,2.9,3,2.8,3,2.9,  2.6,2.4,2.4,2.7,2.7,3,3.4,3.1,2.3,3,2.5,2.6,3,  2.6,2.3,2.7,3,2.9,2.9,2.5,2.8,3.3,2.7,3,2.9,3,  3,2.5,2.9,2.5,3.6,3.2,2.7,3,2.5,2.8,3.2,3,  3.8,2.6,2.2,3.2,2.8,2.8,2.7,3.3,3.2,2.8,3,2.8,  3,2.8,3.8,2.8,2.8,2.6,3,3.4,3.1,3,3.1,3.1,3.1,  2.7,3.2,3.3,3,2.5,3,3.4,3),  Petal.Length = c(1.4,1.4,1.3,1.5,1.4,1.7,  1.4,1.5,1.4,1.5,1.5,1.6,1.4,1.1,1.2,1.5,1.3,1.4,  1.7,1.5,1.7,1.5,1,1.7,1.9,1.6,1.6,1.5,1.4,  1.6,1.6,1.5,1.5,1.4,1.5,1.2,1.3,1.4,1.3,1.5,1.3,  1.3,1.3,1.6,1.9,1.4,1.6,1.4,1.5,1.4,4.7,4.5,  4.9,4,4.6,4.5,4.7,3.3,4.6,3.9,3.5,4.2,4,4.7,  3.6,4.4,4.5,4.1,4.5,3.9,4.8,4,4.9,4.7,4.3,4.4,  4.8,5,4.5,3.5,3.8,3.7,3.9,5.1,4.5,4.5,4.7,4.4,  4.1,4,4.4,4.6,4,3.3,4.2,4.2,4.2,4.3,3,4.1,6,  5.1,5.9,5.6,5.8,6.6,4.5,6.3,5.8,6.1,5.1,5.3,  5.5,5,5.1,5.3,5.5,6.7,6.9,5,5.7,4.9,6.7,4.9,5.7,  6,4.8,4.9,5.6,5.8,6.1,6.4,5.6,5.1,5.6,6.1,  5.6,5.5,4.8,5.4,5.6,5.1,5.1,5.9,5.7,5.2,5,5.2,  5.4,5.1),  Petal.Width = c(0.2,0.2,0.2,0.2,0.2,0.4,  0.3,0.2,0.2,0.1,0.2,0.2,0.1,0.1,0.2,0.4,0.4,0.3,  0.3,0.3,0.2,0.4,0.2,0.5,0.2,0.2,0.4,0.2,0.2,  0.2,0.2,0.4,0.1,0.2,0.2,0.2,0.2,0.1,0.2,0.2,  0.3,0.3,0.2,0.6,0.4,0.3,0.2,0.2,0.2,0.2,1.4,1.5,  1.5,1.3,1.5,1.3,1.6,1,1.3,1.4,1,1.5,1,1.4,  1.3,1.4,1.5,1,1.5,1.1,1.8,1.3,1.5,1.2,1.3,1.4,  1.4,1.7,1.5,1,1.1,1,1.2,1.6,1.5,1.6,1.5,1.3,  1.3,1.3,1.2,1.4,1.2,1,1.3,1.2,1.3,1.3,1.1,1.3,  2.5,1.9,2.1,1.8,2.2,2.1,1.7,1.8,1.8,2.5,2,1.9,  2.1,2,2.4,2.3,1.8,2.2,2.3,1.5,2.3,2,2,1.8,2.1,  1.8,1.8,1.8,2.1,1.6,1.9,2,2.2,1.5,1.4,2.3,  2.4,1.8,1.8,2.1,2.4,2.3,1.9,2.3,2.5,2.3,1.9,2,  2.3,1.8),  Species = c("setosa, versicolor",  "setosa, versicolor","setosa, versicolor","setosa, versicolor",  "setosa, versicolor","setosa, versicolor",  "setosa, versicolor","setosa, versicolor","setosa, versicolor",  "setosa, versicolor","setosa, versicolor",  "setosa, versicolor","setosa, versicolor","setosa, versicolor",  "setosa, versicolor","setosa, versicolor","setosa, versicolor",  "setosa, versicolor","setosa, versicolor",  "setosa, virginica","setosa, virginica","setosa, virginica",  "setosa, virginica","setosa, virginica","setosa, virginica",  "setosa, virginica","setosa, virginica",  "setosa, virginica","setosa, virginica","setosa, virginica","setosa",  "setosa","setosa","setosa","setosa","setosa",  "setosa","setosa","setosa","setosa","setosa","setosa",  "setosa","setosa","setosa","setosa","setosa","setosa",  "setosa","setosa","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","versicolor",  "versicolor","versicolor","versicolor","virginica",  "virginica","virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica",  "virginica","virginica","virginica","virginica","virginica") ) library(shiny) library(ggplot2)  # Define UI for application that draws a histogram ui lt;- fluidPage(   titlePanel("Iris dataset but mutated for this purpose"),  fluidRow(  column(5,   checkboxGroupInput("names",  "select the species you want to exclude:", inline = TRUE,  c("All",  unique(as.character(names))))  ),    DT::dataTableOutput("table")  ))   # Define server logic required to draw a histogram server lt;- function(input, output){   output$table lt;- DT::renderDataTable(DT::datatable({  data lt;- irismut  if (input$names != "All"){  data lt;- data[data$names == input$names,]  }  data  })) }  # Run the application  shinyApp(ui = ui, server = server)  

Ответ №1:

 library(shiny) library(tidyverse)  irismut lt;- data.frame(  stringsAsFactors = FALSE,  Sepal.Length = c(  5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6,  5, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1,  5.7, 5.1, 5.4, 5.1, 4.6, 5.1, 4.8, 5, 5, 5.2, 5.2, 4.7, 4.8,  5.4, 5.2, 5.5, 4.9, 5, 5.5, 4.9, 4.4, 5.1, 5, 4.5, 4.4,  5, 5.1, 4.8, 5.1, 4.6, 5.3, 5, 7, 6.4, 6.9, 5.5, 6.5,  5.7, 6.3, 4.9, 6.6, 5.2, 5, 5.9, 6, 6.1, 5.6, 6.7, 5.6, 5.8,  6.2, 5.6, 5.9, 6.1, 6.3, 6.1, 6.4, 6.6, 6.8, 6.7, 6,  5.7, 5.5, 5.5, 5.8, 6, 5.4, 6, 6.7, 6.3, 5.6, 5.5, 5.5, 6.1,  5.8, 5, 5.6, 5.7, 5.7, 6.2, 5.1, 5.7, 6.3, 5.8, 7.1,  6.3, 6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6.8, 5.7, 5.8,  6.4, 6.5, 7.7, 7.7, 6, 6.9, 5.6, 7.7, 6.3, 6.7, 7.2, 6.2,  6.1, 6.4, 7.2, 7.4, 7.9, 6.4, 6.3, 6.1, 7.7, 6.3, 6.4,  6, 6.9, 6.7, 6.9, 5.8, 6.8, 6.7, 6.7, 6.3, 6.5, 6.2, 5.9  ),  Sepal.Width = c(  3.5, 3, 3.2, 3.1, 3.6, 3.9, 3.4,  3.4, 2.9, 3.1, 3.7, 3.4, 3, 3, 4, 4.4, 3.9, 3.5, 3.8,  3.8, 3.4, 3.7, 3.6, 3.3, 3.4, 3, 3.4, 3.5, 3.4, 3.2, 3.1,  3.4, 4.1, 4.2, 3.1, 3.2, 3.5, 3.6, 3, 3.4, 3.5, 2.3, 3.2,  3.5, 3.8, 3, 3.8, 3.2, 3.7, 3.3, 3.2, 3.2, 3.1, 2.3, 2.8,  2.8, 3.3, 2.4, 2.9, 2.7, 2, 3, 2.2, 2.9, 2.9, 3.1, 3,  2.7, 2.2, 2.5, 3.2, 2.8, 2.5, 2.8, 2.9, 3, 2.8, 3, 2.9,  2.6, 2.4, 2.4, 2.7, 2.7, 3, 3.4, 3.1, 2.3, 3, 2.5, 2.6, 3,  2.6, 2.3, 2.7, 3, 2.9, 2.9, 2.5, 2.8, 3.3, 2.7, 3, 2.9, 3,  3, 2.5, 2.9, 2.5, 3.6, 3.2, 2.7, 3, 2.5, 2.8, 3.2, 3,  3.8, 2.6, 2.2, 3.2, 2.8, 2.8, 2.7, 3.3, 3.2, 2.8, 3, 2.8,  3, 2.8, 3.8, 2.8, 2.8, 2.6, 3, 3.4, 3.1, 3, 3.1, 3.1, 3.1,  2.7, 3.2, 3.3, 3, 2.5, 3, 3.4, 3  ),  Petal.Length = c(  1.4, 1.4, 1.3, 1.5, 1.4, 1.7,  1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1.4,  1.7, 1.5, 1.7, 1.5, 1, 1.7, 1.9, 1.6, 1.6, 1.5, 1.4,  1.6, 1.6, 1.5, 1.5, 1.4, 1.5, 1.2, 1.3, 1.4, 1.3, 1.5, 1.3,  1.3, 1.3, 1.6, 1.9, 1.4, 1.6, 1.4, 1.5, 1.4, 4.7, 4.5,  4.9, 4, 4.6, 4.5, 4.7, 3.3, 4.6, 3.9, 3.5, 4.2, 4, 4.7,  3.6, 4.4, 4.5, 4.1, 4.5, 3.9, 4.8, 4, 4.9, 4.7, 4.3, 4.4,  4.8, 5, 4.5, 3.5, 3.8, 3.7, 3.9, 5.1, 4.5, 4.5, 4.7, 4.4,  4.1, 4, 4.4, 4.6, 4, 3.3, 4.2, 4.2, 4.2, 4.3, 3, 4.1, 6,  5.1, 5.9, 5.6, 5.8, 6.6, 4.5, 6.3, 5.8, 6.1, 5.1, 5.3,  5.5, 5, 5.1, 5.3, 5.5, 6.7, 6.9, 5, 5.7, 4.9, 6.7, 4.9, 5.7,  6, 4.8, 4.9, 5.6, 5.8, 6.1, 6.4, 5.6, 5.1, 5.6, 6.1,  5.6, 5.5, 4.8, 5.4, 5.6, 5.1, 5.1, 5.9, 5.7, 5.2, 5, 5.2,  5.4, 5.1  ),  Petal.Width = c(  0.2, 0.2, 0.2, 0.2, 0.2, 0.4,  0.3, 0.2, 0.2, 0.1, 0.2, 0.2, 0.1, 0.1, 0.2, 0.4, 0.4, 0.3,  0.3, 0.3, 0.2, 0.4, 0.2, 0.5, 0.2, 0.2, 0.4, 0.2, 0.2,  0.2, 0.2, 0.4, 0.1, 0.2, 0.2, 0.2, 0.2, 0.1, 0.2, 0.2,  0.3, 0.3, 0.2, 0.6, 0.4, 0.3, 0.2, 0.2, 0.2, 0.2, 1.4, 1.5,  1.5, 1.3, 1.5, 1.3, 1.6, 1, 1.3, 1.4, 1, 1.5, 1, 1.4,  1.3, 1.4, 1.5, 1, 1.5, 1.1, 1.8, 1.3, 1.5, 1.2, 1.3, 1.4,  1.4, 1.7, 1.5, 1, 1.1, 1, 1.2, 1.6, 1.5, 1.6, 1.5, 1.3,  1.3, 1.3, 1.2, 1.4, 1.2, 1, 1.3, 1.2, 1.3, 1.3, 1.1, 1.3,  2.5, 1.9, 2.1, 1.8, 2.2, 2.1, 1.7, 1.8, 1.8, 2.5, 2, 1.9,  2.1, 2, 2.4, 2.3, 1.8, 2.2, 2.3, 1.5, 2.3, 2, 2, 1.8, 2.1,  1.8, 1.8, 1.8, 2.1, 1.6, 1.9, 2, 2.2, 1.5, 1.4, 2.3,  2.4, 1.8, 1.8, 2.1, 2.4, 2.3, 1.9, 2.3, 2.5, 2.3, 1.9, 2,  2.3, 1.8  ),  Species = c(  "setosa, versicolor",  "setosa, versicolor", "setosa, versicolor", "setosa, versicolor",  "setosa, versicolor", "setosa, versicolor",  "setosa, versicolor", "setosa, versicolor", "setosa, versicolor",  "setosa, versicolor", "setosa, versicolor",  "setosa, versicolor", "setosa, versicolor", "setosa, versicolor",  "setosa, versicolor", "setosa, versicolor", "setosa, versicolor",  "setosa, versicolor", "setosa, versicolor",  "setosa, virginica", "setosa, virginica", "setosa, virginica",  "setosa, virginica", "setosa, virginica", "setosa, virginica",  "setosa, virginica", "setosa, virginica",  "setosa, virginica", "setosa, virginica", "setosa, virginica", "setosa",  "setosa", "setosa", "setosa", "setosa", "setosa",  "setosa", "setosa", "setosa", "setosa", "setosa", "setosa",  "setosa", "setosa", "setosa", "setosa", "setosa", "setosa",  "setosa", "setosa", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "versicolor",  "versicolor", "versicolor", "versicolor", "virginica",  "virginica", "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica",  "virginica", "virginica", "virginica", "virginica", "virginica"  ) )   # Define UI for application that draws a histogram ui lt;- fluidPage(  titlePanel("Iris dataset but mutated for this purpose"),  fluidRow(  column(  5,  checkboxGroupInput("names",  "select the species you want to exclude:",  choices = NULL, inline = TRUE  )  ),  DT::dataTableOutput("table")  ) )   # Define server logic required to draw a histogram server lt;- function(input, output, session) {  updateCheckboxGroupInput(session, "names", choices = unique(irismut$Species) %gt;% discard(~ .x %gt;% str_detect(",")) %gt;% c("all"))   output$table lt;- DT::renderDataTable(DT::datatable({  if(is.null(input$names)) {  # nothing selected to exclude thus return everything  return(irismut)  }   req(input$names)  req(! "all" %in% input$names)    irismut %gt;%  filter(!Species %gt;% str_detect(input$names %gt;% paste0(collapse = "|")))  })) }  # Run the application shinyApp(ui = ui, server = server)   

введите описание изображения здесь