actionButton в RShiny: альтернатива сбросу значения

Я читал в темах, что невозможно сбросить значение actionButton с помощью Shiny Package, но я не смог найти никакого трюка для решения моей проблемы.

Я хотел бы удалить текст и кнопку на главной панели с помощью этого кода:

library(shiny)

shinyUI(fluidPage(

    titlePanel("Trying to reset text !"),

    sidebarLayout(
        sidebarPanel(
            actionButton("button1","Print text")
        ),

        mainPanel(
          textOutput("textToPrint"),
          br(),
          uiOutput("uiButton2")
        )
    )
))

shinyServer(function(input, output) {

    output$textToPrint <- renderText({ 
        if(input$button1==0) (return("")) 
        else (return("Button clicked"))
    })

    output$uiButton2 <- renderUI({
        if(input$button1==0) (return ())
        else (return(actionButton("button2","Reset text and this button")))
    })

})

Какова альтернатива невозможному input$button1 = 0?

Заранее спасибо за вашу помощь,

Мэтт


person mbh86    schedule 12.06.2014    source источник


Ответы (1)


Спасибо Джо Ченгу, вот хороший способ сделать это:

shinyServer(function(input, output) {
    values <- reactiveValues(shouldShow = FALSE)

    observe({
        if (input$button1 == 0) return()
        values$shouldShow = TRUE
    })

    observe({
      if (is.null(input$button2) || input$button2 == 0)
          return()
      values$shouldShow = FALSE
    })

    output$textToPrint <- renderText({ 
        if (values$shouldShow)
          "Button clicked"
    })
    output$uiButton2 <- renderUI({
        if (values$shouldShow)
            actionButton("button2","Reset text and this button")

    })
})
person mbh86    schedule 18.06.2014