сбросить R shiny actionButton, чтобы использовать его более одного раза

Кто-нибудь знает, как сбросить actionButton (R shiny) до начального значения, чтобы использовать его более одного раза?

Ниже приведен воспроизводимый пример:

В этом примере я хотел бы изменить цвет диаграммы, нажав соответствующую кнопку: моя проблема в том, что она не может перезагрузить диаграмму после одной итерации.

library(shiny)

ui <- fluidPage(

  actionButton(inputId = "button1",label = "Select red"),
  actionButton(inputId = "button2",label = "Select blue"),
  plotOutput("distPlot")

)


server <- function(input, output) {

   output$distPlot <- renderPlot({
      x    <- faithful[, 2] 
      bins <- seq(min(x), max(x))

      my_color <- "green"
      if (input$button1){my_color <- "red"}
      if (input$button2){my_color <- "blue"}

      hist(x, breaks = bins, col = my_color)
   })
}

shinyApp(ui = ui, server = server)

заранее спасибо


person JeanBertin    schedule 09.05.2018    source источник


Ответы (1)


Обычно не рекомендуется сбрасывать ActionButton в Shiny. Я бы посоветовал вам использовать ObserveEvent и сохранить цвет в reactiveValues.

library(shiny)

ui <- fluidPage(
  actionButton(inputId = "button1", label = "Select red"),
  actionButton(inputId = "button2", label = "Select blue"),
  plotOutput("distPlot")
)


server <- function(input, output) {
  r <- reactiveValues(my_color = "green")

  output$distPlot <- renderPlot({
    x <- faithful[, 2]
    bins <- seq(min(x), max(x))
    hist(x, breaks = bins, col = r$my_color)
  })

  observeEvent(input$button1, {
    r$my_color <- "red"
  })

  observeEvent(input$button2, {
    r$my_color <- "blue"
  })
}

shinyApp(ui = ui, server = server)
person mbh86    schedule 09.05.2018
comment
Вы знаете, возможно ли это с одним observeEvent? а функция ifelse или case_when? вроде: observeEvent(c(input$button1, input$button2){ r$my_color <- case_when(input$button1 > 0 ~ "red", input$button2 > 0 ~ "blue" }) Я не могу заставить что-то подобное работать. - person Kevin; 19.03.2021
comment
@Kevin Ты это проверил? stackoverflow.com/questions/41960953/ - person mbh86; 24.03.2021
comment
Да, я видел это, но в моем случае это не работает. После однократного использования всех параметров цвета приложение Shiny зависает. Приведенное выше решение работает лучше в моем случае. Спасибо за предложение. - person Kevin; 26.03.2021