Checkboxgroup R Блестящие категории разбиты по столбцам вместо одной строки - PullRequest
1 голос
/ 07 октября 2019

Я создал контрольную группу всех штатов в США для моей блестящей панели инструментов R. У меня есть категорический столбец State в моей базе данных. Есть ли способ, которым я могу передать весь столбец по выбору, так как я хочу, чтобы все состояния в столбце были выбраны в моем флажке. В настоящее время я вручную выставляю аргументы, подобные этому:

checkboxGroupInput("checkGroup", label = h3("Checkbox group"), 
                                   choices = list("AL" ="AL",
                                                  "AR"="AR",
                                                  "AZ"="AZ",
                                                  "CO"="CO",
                                                  "CT"="CT",
                                                  "DC"="DC",
                                                  "DE"="DE",
                                                  "FL"="FL",
                                                  "GA"="GA",
                                                  "HI"="HI",
                                                  "IA"="IA",
                                                  "ID"="ID",
                                                  "IL"="IL",
                                                  "IN"="IN",
                                                  "KS"="KS",
                                                  "KY"="KY",
                                                  "LA"="LA",
                                                  "MA"="MA",
                                                  "MD"="MD",
                                                   .
                                                   .
                                                   .
                                                   .
))

Я ищу лучший способ поставить эти варианты выбора в аргументе выбора вместо того, чтобы вручную вводить каждую категорию.

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

Прикрепленный скриншот ниже для справки о том, как он выглядит прямо сейчас:

enter image description here

1 Ответ

2 голосов
/ 08 октября 2019

Ну @ ​​Джит, я думаю, что это решение вашей проблемы, и оно основано на ответе, который я предлагаю вам ранее.

В этом примере, чтобы не сказать, что я хочу блестящее приложение, которое даетВы таблица с названием и сокращением названия выбранных вами штатов.

Данные

df <- structure(
  list(
    state = c("Alabama", "Alaska", "Arizona", "Arkansas",
              "California", "Colorado", "Connecticut", "Delaware", "Florida",
              "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa",
              "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts",
              "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana",
              "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico",
              "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma",
              "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota",
              "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington",
              "West Virginia", "Wisconsin", "Wyoming"),
    abr = c("AL", "AK",
            "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL",
            "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS",
            "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH",
            "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA",
            "WA", "WV", "WI", "WY")),
  class = "data.frame",
  row.names = c(NA, -50L)
  )

Подход, который я использую, чтобы закончить свиджет, который показывает все сокращения имен состояний в трех столбцах, а не в длинном

  1. В пользовательском интерфейсе я поместил три checkboxGroupInput внутри dropdownButton
  2. На сервереЯ объединил значения, выбранные в этих трех входах, в один вектор с функцией reactive
  3. Затем я использовал этот объект для фильтрации кадра данных с выбранными состояниями

Приложение

library(shiny)
library(shinyWidgets)
library(dplyr)

ui <- fluidPage(
dropdownButton(
  label = "Select states",
  status = "default", width = 450,
  tags$label("Choose :"),
  fluidRow(
    column(
      width = 4,
      checkboxGroupInput(
        inputId = "checka",
        label = NULL,
        choices = df$abr[1:17]
        )
      ),

    column(
      width = 4,
      checkboxGroupInput(
        inputId = "checkb",
        label = NULL,
        choices = df$abr[18:34]
      )
    ),

    column(
      width = 4,
      checkboxGroupInput(
        inputId = "checkc",
        label = NULL,
        choices = df$abr[35:50]
      )
    )

  )
),

tableOutput("table")
)



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



abr_selected <- reactive({
  x <- c(input$checka, input$checkb, input$checkc)
})  


  output$table <- renderTable({
    df %>%
      filter(abr %in% abr_selected()) 
  })


}

shinyApp(ui, server)

output

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