2017-06-06 3 views
0

Ich möchte in der Lage sein, den Wert eines Kontrollkästchens auch durch Klicken auf eine Aktionsschaltfläche (zum Deaktivieren bestimmter Programmoptionen, wenn man eine andere Funktionalität wählt) zu steuern. Obwohl ich nah dran bin, was ich will, kann ich das Kontrollkästchen nicht richtig initialisiert bekommen. Der Aktionsknopf muss mindestens einmal gedrückt werden, um das Kästchen an erster Stelle zu sehen.R Shiny: Kontrolle Kontrollkästchen Wert mit Aktionstaste

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 }) 

} 

und

# ui.R 

fluidPage(

# plot checkbox 
uiOutput("make_box"), 

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

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

) 

Antwort

1

Eine Möglichkeit, eine reactiveVal() zu verwenden wäre:

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

Danke, funktioniert das! Ich habe nur die letzte "beobachtende" Funktion in ein "observeEvent" geändert, das eine 'if' Anweisung enthält, mit der Sie den Wert auch wieder auf' FALSE' setzen können. – Paul