我为R闪亮仪表板创建了美国所有州的checkBoxgroup。我的数据库中有一个类别列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",
.
.
.
.
))
我正在寻找一种更好的方法来将这些选项放入choices参数中,而不是手动键入每个类别。
此外,当我将其放入UI函数中时, 这会在一个栏中创建所有状态的大型核对清单,导致我的应用包含多个页面。我想把它放在我可能有多列的空间中。
在下面附上屏幕截图以供参考,以了解其当前外观:
答案 0 :(得分:2)
嗯,@ Jeet,我认为这是针对您的问题的解决方案,它基于我之前向您提出的答案。
在这个示例中,免得说我想要一个闪亮的应用程序,该应用程序为您提供一个表,该表的名称为您所选择的州名称的缩写。
数据
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)
)
我最终使用的一种小部件的方法,该小部件在三列而不是一长列中显示所有状态名称的缩写
checkboxGroupInput
放在了dropdownButton
reactive
函数将在这三个输入中选择的值合并为一个向量应用
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)