2017-06-06 67 views
0

我希望能夠通過單擊操作按鈕(用於在選擇不同功能時禁用某些程序選項)來控制複選框的值。雖然我接近我想要的東西,但我無法正確初始化複選框。操作按鈕必須至少按一次才能首先看到複選框。R Shiny:使用操作按鈕控制複選框值

MWE:

# server.R 

function(input, output) { 

    output$make_box <- renderUI({ 
     checkboxInput("checkbox", label = "Choice A", value = setboxon()) 
    }) 

    setboxon <- eventReactive(input$action, { 
     if(is.null(input$checkbox)) 
     return(FALSE) 
     else if(input$checkbox==TRUE) 
     return(FALSE) 
     else 
     return(TRUE) 
    }) 

    # check status off checkbox value 
    output$value <- renderPrint({ input$checkbox }) 

} 

# ui.R 

fluidPage(

# plot checkbox 
uiOutput("make_box"), 

# plot action button 
actionButton("action", label = "Action"), 
br(), 

hr(), 
# output check 
fluidRow(column(3, verbatimTextOutput("value"))) 

) 

回答

1

一種方法是使用reactiveVal()

setboxon <- reactiveVal(TRUE) 

observe({ 
    if(is.null(input$checkbox)) 
    setboxon(FALSE) 
    else if(input$checkbox==FALSE) 
    setboxon(FALSE) 
}) 

observe({ 
    if(input$action) setboxon(TRUE) 
}) 
+1

謝謝,這作品!我只把最後一個'observe'函數改成了一個'observeEvent',它包含一個'if'語句,讓你可以將值設回到'FALSE'。 – Paul