Показывать pickerInput в зависимости от результата checkBoxInput R блестящий - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь создать динамический c пользовательский интерфейс для моей блестящей приборной панели. Здесь я хочу показать поле pickerInput, только если входное значение в checkboxGroup является указанным значением c. Например, когда ввод из поля checkboxGroup равен A, я хочу показать поле pickerInput, в противном случае я хочу показать другое поле ввода.

В настоящее время часть моего кода выглядит, используя conditionalPanel, как показано ниже:

output$UI_selection <- renderUI({


tagList(
  p(tags$i("Define the network")),

  checkboxGroupInput(inputId = "choice1", 
                   label = "Make a choice", 
                   choices = list("A", "B")
  ),
  conditionalPanel(condition = "input$choice1 == 'A'",
  pickerInput(inputId = "select1",
              label = "Select first:",
              choices = list(
                "Hierarchies" = grouplist_1),
              selected = NULL,
              options = list(`actions-box` = TRUE, `none-selected-text` = "Select hierarchy", `live-search` = TRUE, title = "Select hierarchy"),
              multiple = FALSE
   )
 ) 

 )
})

Однако это не работает и показывает как checkboxGroupInput, так и PickerInput. Кто-нибудь знает как это исправить?

1 Ответ

1 голос
/ 15 апреля 2020

Функции пакета shiny (например, conditionalPanel) переводят весь код языка R, который вы предоставляете, в JS. Условия, которые вы вводите в conditionalPanel, должны интерпретироваться в JS, где вместо $.

используется .. Вам необходимо заменить condition = "input$choice1 == 'A'" на condition = "input.choice1 == 'A'".

Полное рабочее приложение здесь:

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  uiOutput("UI_selection")
)

server <- function(input, output, session) {

  output$UI_selection <- renderUI({
    tagList(
      p(tags$i("Define the network")),

      checkboxGroupInput(inputId = "choice1", 
                         label = "Make a choice", 
                         choices = list("A", "B")
      ),
      conditionalPanel(condition = "input.choice1 == 'A'",
                       pickerInput(inputId = "select1",
                                   label = "Select first:",
                                   choices = list(
                                     "Hierarchies" = c("X","Y","Z")),
                                   selected = NULL,
                                   options = list(`actions-box` = TRUE, `none-selected-text` = "Select hierarchy", `live-search` = TRUE, title = "Select hierarchy"),
                                   multiple = FALSE
                       )
      ) 
    )
  })
}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...