В R с использованием Shiny, есть ли способ использовать предыдущее состояние checkboxGroupInput? - PullRequest
1 голос
/ 16 апреля 2020

Я использую "appendTab" для динамического увеличения моей tabsetPanel, когда я делаю код ниже, я получаю полный список отмеченных элементов в моем tabset. Проблема, которую я не знаю, как решить, заключается в том, что когда вы проверяете или снимаете флажок с элемента ввода, он снова добавляет весь список.

в ui.R

  checkboxGroupInput("states", 
                     label = h5("Selected States"), 
                     choices = state.name,
                     selected = c("Minnesota", "Wisconsin","North Dakota", "Ohio", "South Dakota", "Iowa"),
                     inline = TRUE),

в server.R

 observe({
   for (i in input$states){
    local({
    testi <- i
    appendTab("myTabs",
              tabPanel(i, tags$p(
                fluidRow(
                  column(6,
                         renderUI({
                           inclRmd("./ColumnLeft.Rmd")
                           })
                         ),
                  column(6,
                         renderUI({
                           inclRmd("./ColumnRight.Rmd")
                           })
                         )
                  )
                )), 
              select=TRUE)
    })
  }

 })

Есть ли способ сохранить предыдущее состояние ввода для использования removeTab перед моим использованием appendTab? Есть ли лучший подход к использованию checkboxGroupInput для создания вкладок?

1 Ответ

2 голосов
/ 16 апреля 2020

Вот полный рабочий пример. Обратите внимание на определение state_ui_fun, функции для определения содержимого вкладок. Здесь вы также можете отправить аргументы, такие как имя штата и т. Д.

state_ui_fun <- function(state){

  fluidRow(
    column(6, tags$p("Left content")),
    column(6, tags$p("Right content"))
  )

}


ui <- fluidPage(


  checkboxGroupInput("states", 
                     label = h5("Selected States"), 
                     choices = state.name,
                     selected = c("Minnesota", "Wisconsin","North Dakota", "Ohio", "South Dakota", "Iowa"),
                     inline = TRUE),

  tags$hr(),

  uiOutput("ui_statepanel")

)


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



  output$ui_statepanel <- renderUI({

    state_choice <- input$states

    do.call(tabsetPanel,
            lapply(state_choice,  function(state){

              tabPanel(title = state, state_ui_fun())

            })
    )


  })



}


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