Не снимать флажки (как минимум 1 должен быть активирован) - PullRequest
0 голосов
/ 13 апреля 2020

Есть ли так, чтобы всегда был установлен хотя бы один флажок. Если пользователь собирается снять все флажки, это не должно быть возможно. Таким образом, по крайней мере, 1 ящик должен быть выбран

---
title: "Untitled"
runtime: shiny
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
---

```{r setup, include=FALSE}
library(flexdashboard)
library(DT)
library(tidyverse)
```

Column {data-width=650}
-----------------------------------------------------------------------

### Chart A

```{r}
checkboxGroupInput(inputId = "ID", "Species", choices = unique(iris$Species), selected = as.character(unique(iris$Species)),inline = TRUE)
DT::DTOutput("iris_table")

table_iris <- reactive({
  print(input$ID)
  if(!is.null(input$ID))
  {
    iris <- iris %>% filter(Species %in% input$ID)
  }
  else
  {
    iris
  }
})

output$iris_table <-
        DT::renderDT({
            datatable(table_iris(),
                      rownames = F,
                      escape = FALSE) 
        })
```


1 Ответ

0 голосов
/ 13 апреля 2020
---
title: "Untitled"
runtime: shiny
output: 
  flexdashboard::flex_dashboard:
  orientation: columns
vertical_layout: fill
---

```{r setup, include=FALSE}
library(flexdashboard)
library(DT)
library(tidyverse)
```

Column {data-width=650}
-----------------------------------------------------------------------

  ### Chart A

```{r}
library(shiny)

minSelection <- 1
my_max <- 3

shinyApp(ui = fillPage(
      checkboxGroupInput(inputId = "ID", "Species", choices = unique(iris$Species), selected = as.character(unique(iris$Species)),inline = TRUE),
    DT::DTOutput("iris_table")),

server = function(input, output,session) {

  table_iris <- reactive({
    print(input$ID)
  if(!is.null(input$ID))
  {
    iris <- iris %>% filter(Species %in% input$ID)
  }
  else
  {
    iris
  }
})

  output$iris_table <-
    DT::renderDT({
      datatable(table_iris(),
                rownames = F,
                escape = FALSE) 
    })

  observe({
    if(length(input$ID) < minSelection)
    {
      updateCheckboxGroupInput(session, "ID", selected= as.character(unique(iris$Species))[1])
    }
  })
})





```


enter image description here

...