R блестящий, блестящий, удалите график и нарисуйте его снова, если нажата кнопка

У меня есть приложение, которое отображает данные Old Faithul с кластерами k-means, когда пользователь нажимает определенную кнопку («запустить k-means»). Теперь я хочу добавить кнопку, которая снова удаляет график («удалить график»). Следуя Hide/show outputs Shiny R, я попробовал это:

library(shiny)

ui <- fluidPage(
actionButton(inputId = "run_kmeans", label = "run k-means"),
actionButton(inputId = "remove_plot", label = "remove plot"),
conditionalPanel("output.show", plotOutput("plot"))
)

server <- function(input, output) {
v <- reactiveValues(show = TRUE)

clusters <- eventReactive(input$run_kmeans, {
kmeans(faithful, 2)
v$show <- TRUE
})

output$plot <- renderPlot({plot(faithful, col = clusters()$cluster)})

output$show <- reactive({
return(v$show)
})

observeEvent(input$remove_plot, {v$show <- 0})

}

shinyApp(ui, server)

К сожалению, теперь кнопка "запустить k-means" больше не работает. Следовательно, я также попробовал это через shinyjs:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  actionButton(inputId = "run_kmeans", label = "run kmeans"),
  actionButton(inputId = "remove_plot", label = "remove plot"),
  plotOutput("plot")
)

server <- function(input, output) {
  clusters <- eventReactive(input$run_kmeans, {kmeans(faithful, 2)})
  output$plot <- renderPlot({show(plot(faithful, col = clusters()$cluster))})

  observeEvent(input$remove_plot, {hide("plot")})
  }

shinyApp(ui, server)

Но теперь график скрыт «навсегда» и не отображается снова, если щелкнуть «запустить k-means» - я неправильно разместил функцию show()? Кто может помочь мне с одним из двух подходов (или с обоими)?


person Joe    schedule 14.03.2017    source источник
comment
поместите вызов show в событие наблюдателя, как вы сделали для вызова hide: observeEvent(input$run_kmeans, {show("plot")})   -  person HubertL    schedule 14.03.2017
comment
Это сделало работу.   -  person Joe    schedule 14.03.2017