Shiny应用中用htmlOutput渲染多选变量为逗号分隔文本的问题
解决Shiny多选selectInput时文本渲染异常的问题
问题出在当selectInput多选时,input$var是一个字符向量,直接用paste会导致每个选项都重复前缀"You have selected"。修改方法如下:
修改后的完整代码
require(shiny) runApp(list(ui = pageWithSidebar( headerPanel("Test"), sidebarPanel( selectInput("var", label = "Choose a variable to display", choices = c("Text01", "Text02", "Text03", "Text04"),multiple = TRUE, selected = "Text01"), sliderInput("range", label = "Range of interest:", min = 0, max = 100, value = c(0, 100)) ), mainPanel(htmlOutput("text")) ), server = function(input, output) { output$text <- renderUI({ # 将多选选项合并为逗号分隔的字符串 str1 <- paste("You have selected", paste(input$var, collapse = ",")) # 添加结尾句号匹配预期格式 str2 <- paste("You have chosen a range that goes from", input$range[1], "to", input$range[2], ".") HTML(paste(str1, str2, sep = '<br/>')) }) } ) )
关键修改点
- 对于多选的
input$var,用paste(input$var, collapse = ",")把所有选中选项拼接成一个逗号分隔的字符串,再和前缀组合,避免重复输出"You have selected"。 - 在范围描述的末尾添加了句号,完全匹配预期的输出格式。
内容的提问来源于stack exchange,提问作者Haribo
相关产品推荐
相关产品推荐

