use*_*503 4 r shiny selectize.js
例子:
以下闪亮的示例app.R文件包含一个selectizeInputUI。可以使用 删除选定的元素options = list(plugins= list('remove_button'))。
library(shiny)
library(dplyr)
ui= fluidPage(
sidebarLayout(
sidebarPanel(
selectizeInput(inputId= "cyl", label= "cyl",
choices= sort(unique(mtcars$cyl)),
selected= sort(unique(mtcars$cyl)),
multiple=T,
options = list(plugins= list('remove_button')))
),
mainPanel(
tableOutput("tab")
)
)
)
server= function(input, output) {
df_filtered= reactive({
mtcars %>%
{if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)}
})
output$tab= renderTable(df_filtered())
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
问题:
是否有一个可以在shiny中访问的selectize.js选项,它添加了“一次删除全部”功能,而不是示例中所示的“逐一删除”功能?
我研究了selectize.js 文档但陷入困境。
我认为解决方案是使用reset_button,但是该selected=选项应该更改为 minium (一个选项?),因为它是重置值
library(shiny)
library(shinyjs)
library(dplyr)
ui= fluidPage(
sidebarLayout(
sidebarPanel(
useShinyjs(),
div(id = "form",
selectizeInput(inputId = "cyl",
label = "cyl",
choices = sort(unique(mtcars$cyl)),
selected=sort(unique(mtcars$cyl))[1], multiple=TRUE)),
actionButton("reset_input", "Reset")
),
mainPanel(
tableOutput("tab")
)
)
)
server= function(input, output) {
observeEvent(input$reset_input, {
shinyjs::reset("form")
})
df_filtered= reactive({
mtcars %>%
{if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)}
})
output$tab= renderTable(df_filtered())
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
按下Reset按钮后,所有值立即被清除,并返回selected原始值。selectizeInput