r Использование кнопок действий для скрытия/отображения флажков

Скажем, у меня был следующий код...

ui.r

library(shiny)

    ui <- fluidPage(
      actionButton("fishButton", label = "Fish"),
      checkboxGroupInput("Check1",label=h4 ("Fish:"), choices = c("Bass","Shark","Tuna")),
      actionButton("reptileButton", label = "Reptile"),
      checkboxGroupInput("Check2",label=h4 ("Reptile:"), choices = c("Komodo","Skink","Snake")),
      actionButton("mammalButton", label = "Mammal"),
      checkboxGroupInput("Check3",label=h4 ("Mammals:"), choices = c("Dog","Cat","Bear")),
      actionButton("birdButton", label = "Bird"),
      checkboxGroupInput("Check4",label=h4 ("Birds:"), choices = c("Budgie","Parrot","Cockatiel")),
      actionButton("amphibianButton", label = "Amphibian"),
      checkboxGroupInput("Check5",label=h4 ("Amphibian:"), choices = c("Frog","Toad","Salamander"))
    )

Есть ли способ использовать условные панели, чтобы скрыть/показать группы флажков, нажав соответствующую кнопку действия? Насколько я понимаю, actionButton хранит только целое число, которое начинается с 0 и увеличивается на 1 при каждом нажатии кнопки, что в данном случае не очень полезно. Возможно ли иметь условную панель, которая показывалась бы только тогда, когда ее значение actionButton было бы четным числом или чем-то подобным?


person Ulgur    schedule 12.01.2016    source источник
comment
Вы можете использовать uiOutput() на стороне пользовательского интерфейса и checkboxGroupInput(), сгенерированный на стороне сервера (вероятно), чтобы сделать это. Я не делал эту конкретную вещь, но все время использую входные данные на стороне сервера.   -  person Gopala    schedule 12.01.2016


Ответы (1)


Вы можете сделать это с помощью пакета shinyJS:

install.packages("shinyjs")

В пользовательском интерфейсе инициализируйте поле как скрытое и вызовите переключатель при нажатии кнопки

ui.R:

library(shiny)
library(shinyjs)

shinyUI(fluidPage(

  shinyjs::useShinyjs(),

  actionButton("fishButton", label = "Fish"),
  hidden(
    checkboxGroupInput("Check1",label=h4 ("Fish:"), choices = c("Bass","Shark","Tuna"))
  )
))

сервер.R

library(shiny)
library(shinyjs)

shinyServer(function(input, output) {
  observeEvent(input$fishButton, {
    toggle("Check1")
  })
})
person Icaro Bombonato    schedule 12.01.2016
comment
Здравствуйте, я воспользовался вашим решением, но теперь у меня проблема с фильтрацией данных: if (exists(input$Check1)){datas <- subset(datas, City == input$Check1)} не могли бы вы помочь мне решить эту проблему? Я не думаю, что существующая функция здесь будет работать - person ishido; 25.10.2016
comment
воспроизводимый пример поможет, но я предполагаю, что вы пытаетесь подмножить свои данные на основе отмеченного флажка. Вероятно, это сработает: df ‹- reactive({ if(!is.null(input$Check1)){ subset(data, selections == input$Check1) } }) - person Icaro Bombonato; 25.10.2016