R Shiny中如何将多选输入转为向量并正确输出
解决R Shiny多选输入重复前缀的问题
你的问题根源在于input$checkGroup是一个向量,当直接用paste0("Selected values: ", input$checkGroup)时,R会对向量中的每一个元素单独拼接前缀,导致每个选中值都重复出现前缀。
要得到期望的输出,需要先把选中的所有值合并成一个用逗号分隔的字符串,再和前缀拼接。修改server部分的代码即可:
library(shiny) ui <- fluidPage( checkboxGroupInput("checkGroup", label = h3("Checkbox group"), choices = list("Choice 1" = 1, "Choice 2" = 2, "Choice 3" = 3), selected = 1), hr(), verbatimTextOutput("value") ) server <- function(input, output, session) { output$value <- renderPrint({ paste0("Selected values: ", paste(input$checkGroup, collapse = ", ")) }) } shinyApp(ui, server)
补充说明
paste(input$checkGroup, collapse = ", ")会把向量中的元素用,连接成单个字符串,比如选中1、2、3时会生成"1, 2, 3"- 再用
paste0把前缀和这个合并后的字符串拼接,就能得到"Selected values: 1, 2, 3"的结果
如果习惯用更简洁的语法,也可以用glue包:
# 先安装并加载glue包 install.packages("glue") library(glue) # server中替换为 output$value <- renderPrint({ glue("Selected values: {paste(input$checkGroup, collapse = ', ')}") })
内容的提问来源于stack exchange,提问作者M.Qasim
相关产品推荐
相关产品推荐

