2017-02-20 5 views
0

사용자가 위젯을 클릭하면 selectizeInput에서 초기 값 (selected=)을 제거하고 싶습니다. selectizeInput "cyl"반짝이는 selectizeInput : 처음 선택한 값을 제거하십시오.

초기 선택된 값이다 4 : 샘플 코드의 기초에 설명

library(shiny) 
library(dplyr) 

ui= fluidPage(
    sidebarLayout(
    sidebarPanel(
     selectizeInput(inputId= "cyl", label= "cyl", 
        choices= NULL, 
        selected= sort(unique(mtcars$cyl))[1], 
        multiple=T) 
    ), 
    mainPanel(
     tableOutput("tab") 
    ) 
) 
) 

server= function(input, output,session) { 

    updateSelectizeInput(session = session,inputId ="cyl",choices=sort(unique(mtcars$cyl)),selected=sort(unique(mtcars$cyl))[1], server = TRUE) 

    df_filtered= reactive({ 
    mtcars %>% 
    {if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)} 
    }) 
    output$tab= renderTable(df_filtered()) 
} 

shinyApp(ui, server) 

조금 : 여기

샘플 코드이다. 사용자가이 위젯을 누르면 4 값이 제거되고selected 옵션이 지워지기를 바랍니다. 어떤 아이디어? 나는 때문에 내 shiny app 선택 선택에서 server에서 함수 updateSelectizeInput를 사용했다 *

당신은 updateSelectizeInput 전화를 shinyjs::onclick을 사용할 수 너무 긴 로딩 시간

답변

2

을 선도하는 매우 큰 때 selectize 필드에 사용자가 클릭, 예를 들면 :

library(shiny) 
library(dplyr) 
library(shinyjs) 

ui= fluidPage(
    useShinyjs(), 
    sidebarLayout(
    sidebarPanel(
     selectizeInput(inputId= "cyl", label= "cyl", 
        choices= NULL, 
        selected= sort(unique(mtcars$cyl))[1], 
        multiple=T) 
    ), 
    mainPanel(
     tableOutput("tab") 
    ) 
) 
) 

server= function(input, output,session) { 

    updateSelectizeInput(session = session,inputId ="cyl",choices=sort(unique(mtcars$cyl)),selected=sort(unique(mtcars$cyl))[1], server = TRUE) 

    df_filtered= reactive({ 
    mtcars %>% 
    {if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)} 
    }) 
    output$tab= renderTable(df_filtered()) 

    onclick("cyl", { 
    updateSelectizeInput(session, "cyl", selected = "") 
    }) 
} 

shinyApp(ui, server)