如何让selectizeInput点击或输入时选项顺序保持一致?
解决Shiny中selectizeInput搜索时选项顺序改变的问题
默认情况下,Shiny的selectizeInput组件在输入搜索内容后,会根据匹配度对选项重新排序,导致展示顺序和初始choices向量的顺序不一致。要让选项始终保持固定的初始顺序,只需在组件的options参数中添加排序规则配置。
修改后的完整代码如下:
library(shiny) choices <- c("First choice", "Second choice", "Choice third", "Fourth choice", "Choice fifth") ui <- fluidPage( selectizeInput("id", "My input", choices = choices, multiple = TRUE, options = list( placeholder = "All choices", # 强制按选项初始顺序排序 sortField = list(list(field = "$order")) ) ) ) server <- function(input, output) { } shinyApp(ui = ui, server = server)
原理说明
selectize组件会自动为每个初始选项添加一个$order属性,该属性对应选项在原始choices向量中的位置序号。通过设置sortField = list(list(field = "$order")),可以强制selectize始终按照这个初始序号排序,无论输入什么搜索内容,选项顺序都和初始向量保持一致。
内容的提问来源于stack exchange,提问作者kileuskas
相关产品推荐
相关产品推荐

