【发布时间】:2021-06-01 15:27:19
【问题描述】:
我希望在 Shiny 中有两个复选框列,并带有一个全/无按钮。下面的示例似乎有效,但是当我打印所选框的值时,第二列中的值会重复。
例如,在第 1 列中选择爱达荷州和伊利诺伊州,在第 2 列中选择密苏里州。结果是:
Idaho Missouri, Illinois Missouri 重复密苏里州,并非全部用逗号分隔。
这是为什么?
如何获得由逗号分隔且不重复的状态向量?
R 脚本
library(shiny)
library(shinyWidgets)
library(dplyr)
df <- tibble(
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")
)
ui <- fluidPage(
wellPanel(
checkboxInput('all_none', 'All/None'),
tags$label("Choose :"),
fluidRow(
column(
width = 4,
checkboxGroupInput(
inputId = "checka",
label = NULL,
choices = df$state[1:13]
)
),
column(
width = 4,
checkboxGroupInput(
inputId = "checkb",
label = NULL,
choices = df$state[14:25]
)
)
)
),
textOutput("selected")
)
server <- function(input, output, session) {
observe({
updateCheckboxGroupInput(
session, 'checka', choices = df$state[1:13],
selected = if (input$all_none == TRUE) df$state
)
})
observe({
updateCheckboxGroupInput(
session, 'checkb', choices = df$state[14:25],
selected = if (input$all_none == TRUE) df$state
)
})
output$selected <- renderText({
paste(input$checka, input$checkb, collapse = ", ")
})
}
shinyApp(ui, server)
【问题讨论】:
-
我很抱歉。谢谢提醒!