如何在R Shiny的selectInput组件中默认选中多个值
Shiny selectInput 默认多选的实现方法
问题原因
你的代码失效是因为selected参数传入了不在可选范围内的值:你设置的choices仅包含nba第一列的球员名,但你写的c(nba[1,1],nba[1,2])第二个值是第一行第二列的球队编码,不属于可选列表,因此默认选中规则不生效。
若要默认选中前2个可选值,直接取choices对应的前两个元素即可。
修正后代码
library(shiny) library(DT) nba <- data.frame( player = c("James", "Durant", "Curry", "Harden", "Paul", "Wade"), team = c("CLEOH", "GSWOAK", "GSWOAK", "HOUTX", "HOUTX", "CLEOH"), day1points = c("25","23","30","41","26","20"), day2points = c("24","25","33","45","26","23"), rating=c("1","2","3","4","5","1") ) ui <- navbarPage( title="SADDAS", sidebarLayout( sidebarPanel(uiOutput("var1_select")), mainPanel(tableOutput("reportOutput")) )) server <- function(input, output) { output$var1_select <- renderUI({ selectInput( "ind_var_select", "Select Names", choices = as.character(nba[,1] ), multiple = TRUE, # 仅修改selected参数取值即可 selected = as.character(nba[1:2,1]) ) }) output$reportOutput = renderTable({ # Filter it subset(nba[,1:3], player %in% input$ind_var_select) }, options = list(scrollX = TRUE)) } shinyApp(ui, server)
补充说明
当selectInput设置multiple = TRUE时,selected参数支持传入任意长度的向量,只要向量内的元素都属于choices的取值范围、格式和choices元素格式一致,就能实现默认选中多个值的效果。
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

