Как запретить выбор » ВСЕ » в качестве опции в раскрывающемся списке на гибкой панели мониторинга, когда у пользователя есть возможность выбрать несколько опций?

#r #shiny #flexdashboard

#r #блестящий #flexdashboard

Вопрос:

В приложении пользователь имеет возможность выбрать одного или нескольких различных производителей в раскрывающемся меню. Они также могут выбрать ВСЕ в качестве опции. Хотя, когда кто-то выбирает » ВСЕ » в качестве опции, он также может выбрать и других производителей. Функционально я хочу, чтобы пользователь выбрал «ВСЕ», а затем, когда они выберут других производителей, я хочу, чтобы » ВСЕ » не было выбрано и было удалено в качестве ввода в текстовое поле. Кто-нибудь знает, как это сделать?

Вот данные:

Вот код:

 --- title: "Test" output:   flexdashboard::flex_dashboard:  orientation: rows  vertical_layout: fill  runtime: shiny ---  ```{r global, include=FALSE} library(dplyr) library(tidyquant) library(ggplot2) library(stringr) library(tidyr) library(pins) library(shiny) library(httr) library(XML) library(DT) library(plotly) library(purrr)      test_data lt;- structure(list(Toys = c("Slinky", "Slinky", "Slinky", "Slinky",  "Slinky", "Slinky", "Tin Solider", "Tin Solider", "Tin Solider",  "Tin Solider", "Tin Solider", "Tin Solider", "Hungry Hungry Hippo",  "Hungry Hungry Hippo", "Hungry Hungry Hippo", "Hungry Hungry Hippo",  "Hungry Hungry Hippo", "Hungry Hungry Hippo"), Manufacturer = c("Manufacturer A",  "Manufacturer B", "Manufacturer C", "Manufacturer A", "Manufacturer A",  "Manufacturer A", "Manufacturer B", "Manufacturer B", "Manufacturer B",  "Manufacturer B", "Manufacturer B", "Manufacturer B", "Manufacturer C",  "Manufacturer C", "Manufacturer C", "Manufacturer C", "Manufacturer C",  "Manufacturer C"), Price = c(5.99, 6.99, 7.99, 9, 6, 5.54, 7,  9.99, 6.99, 6.75, 8, 7.99, 9.99, 7.99, 5.99, 8.99, 10.99, 9.75 ), change = c(0, 16.69449082, 14.30615165, 12.640801, -33.33333333,  -7.666666667, 0, 42.71428571, -30.03003003, -3.433476395, 18.51851852,  -0.125, 0, -20.02002002, -25.03128911, 50.08347245, 22.24694105,  -11.28298453), Dates = c("1/1/2021", "3/1/2021", "5/1/2021",  "7/1/2021", "9/1/2021", "10/1/2021", "1/1/2021", "3/1/2021",  "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", "1/1/2021",  "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021")), class = "data.frame", row.names = c(NA,  -18L)) names(test_data) lt;- c("Toys", "Manufacturer", "Price", "change", "Dates")  ```   Sidebar {.sidebar} -----------------------------------------------------------------------  ```{r}  selectInput("Toys",  label = "Toys",  choices = unique(sort(test_data$Toys)),  selected = "Slinky")   selectizeInput("Manufacturer",  label = "Manufacturer",  choices = as.character(unlist(test_data %gt;%  dplyr::select(Manufacturer) %gt;%  dplyr::arrange(Manufacturer) %gt;%  distinct())),   multiple = TRUE,  options = list(placeholder = 'Make a selection below'))  ```  Column  ------------------------------------- ```{r} #Hides initial error messages tags$style(type="text/css",  ".shiny-output-error { visibility: hidden; }",  ".shiny-output-error:before { visibility: hidden; }" )   observe({ if (!is.null(input$Toys)){  updateSelectInput(  inputId = "Manufacturer",  choices = test_data %gt;%  dplyr::filter(Toys == input$Toys) %gt;%  dplyr::select(Manufacturer) %gt;%  dplyr::distinct() %gt;%  dplyr::pull(Manufacturer) %gt;%  str_sort %gt;%  append('ALL', after = 0),   selected = c('ALL')  )  } })    Toys_reactive lt;- reactive({  if(input$Manufacturer == "ALL"){  Toys_reactive lt;- test_data %gt;%  dplyr::filter(Toys == input$Toys)  }  else if(length(unique(test_data$Manufacturer)) gt;= 1){  Toys_reactive = NULL  for(i in input$Manufacturer){  subset_toys lt;- test_data %gt;%   dplyr::filter(Manufacturer == i amp; Toys == input$Toys)  Toys_reactive lt;- rbind(Toys_reactive, subset_toys)  }  }  Toys_reactive })  

Вот пример того, что происходит:

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

Я бы хотел, чтобы ВСЕ это не было включено в текстовое поле, когда пользователь выбирает определенного производителя или нескольких разных производителей.

Комментарии:

1. Извините, я хочу, чтобы пользователь мог выбрать одного/нескольких производителей или выбрать «ВСЕ». Я не хочу, чтобы пользователь мог выбрать «ВСЕ», а также производителя A, производителя B и производителя C. Таким образом, как только производитель A выбран, » ВСЕ » не должно быть включено в качестве ввода в текстовое поле.

2. О, » ВСЕ » всегда должно отображаться как опция в раскрывающемся списке, но как только она выбрана, производители A, B и C должны исчезнуть в текстовом поле.