Как создать переменную внутри среды Taglist Shiny - PullRequest
0 голосов
/ 29 апреля 2020

Я строю блестящую панель с различными виджетами ввода. Я хочу, чтобы параметры, заданные в одном виджете, зависели от ввода в предыдущем виджете. Например, у меня есть элемент pickerInput, в котором можно указать переменную из моего набора данных (df). Далее я хочу отобразить checkboxGroupInput, где вы можете выбрать уникальные значения ранее выбранной переменной. Следовательно, переменная choices в checkboxGroupInput должна представлять собой список, содержащий все уникальные значения из ранее выбранной переменной. Мой код теперь выглядит так:

 tagList(
     pickerInput(inputId = "select_add",
                 label = "Select variable:",
                 choices = list(grouplist_1),
                 selected = NULL
                ),

                list_members = c(unique(as.data.frame(df)[input$select_add])),

                conditionalPanel(condition = "input.Name_add_member1.length > 0",
                                 checkboxGroupInput(inputId = "def_members", label = "Define",
                                 choices = list_members)

 )

В коде list members генерирует список с уникальными значениями в выбранной переменной. Однако похоже, что эта строка здесь не выполняется. Кто-нибудь знает как это решить?

1 Ответ

0 голосов
/ 29 апреля 2020

Код, который фильтрует df для создания list_members, должен находиться в серверной части вашего приложения Shiny, потому что он включает вычисления с использованием одного из ваших входных данных (input$select_add). Вы можете создать свою группу флажков динамически, используя renderUI().

ui <- fluidPage(tagList(
  uiOutput("variables"),

  conditionalPanel(condition = "input.Name_add_member1.length > 0",
                   uiOutput("members"))

))

server <- function(input, output, session) {
  df <- ... # df needs to be defined on the server side or in the global environment

  output$variables <- renderUI({
    pickerInput(
      inputId = "select_add",
      label = "Select variable:",
      choices = colnames(df),
      selected = NULL
    )
  })

  output$members <- renderUI({
    list_members = c(unique(as.data.frame(df)[input$select_add]))
    checkboxGroupInput(inputId = "def_members",
                       label = "Define",
                       choices = list_members)
  })
}

. Помните, что df должен находиться в глобальной среде и / или в пространстве имен server().

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