В блестящем, как получить новый actionButton, когда выбрана другая переменная? - PullRequest
1 голос
/ 17 февраля 2020

У меня есть простая задача распечатать вывод вызова для table() для выбранной переменной.
Я хочу отобразить вывод, когда нажата кнопка «Печать».

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

Спасибо!

Вот воспроизводимый пример:

library(shiny)
data = iris

ui = fluidPage(
    uiOutput("selectvar"),
    actionButton("print", "Print"),
    verbatimTextOutput("info")
)

server = function(input, output, session)
{
    output$selectvar = renderUI({
        selectInput("selectedvar",
                    "Select variable",
                    choices = colnames(iris))
    })

    tab = reactive( table(data[[input$selectedvar]]) )

    observeEvent(input$print, {
        output$info = renderPrint( tab() ) 
    })

}

shinyApp(ui, server)

1 Ответ

0 голосов
/ 17 февраля 2020

Это потому, что output$info реагирует на tab(), даже если оно заключено в observeEvent. Я думаю, что это приложение делает то, что вы хотите:

library(shiny)
data = iris

ui = fluidPage(
  uiOutput("selectvar"),
  actionButton("print", "Print"),
  verbatimTextOutput("info")
)

server = function(input, output, session)
{
  output$selectvar = renderUI({
    selectInput("selectedvar",
                "Select variable",
                choices = colnames(iris))
  })

  tab <- reactiveVal()
  observeEvent(input$selectedvar, {
    tab(NULL)
  })
  observeEvent(input$print, {
    tab(table(data[[input$selectedvar]]))
  })

  output$info <- renderPrint({
    tab()
  })

}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...