【问题标题】:In shiny, how to have a new actionButton when a different variable is selected?In shiny, how to have a new actionButton when a different variable is selected?
【发布时间】:2020-02-17 19:13:18
【问题描述】:

我有一个简单的任务,即在选定变量上打印对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)

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    这是因为output$infotab() 有反应,即使它包含在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)
    

    【讨论】:

    • 谢谢,就是这样!我只是稍微调整了你的答案,所以我根本没有得到任何输出,而不是打印的“NULL”。我认为使用 output$info = NULL 而不是 tab(NULL) 可以满足我的要求。
    • @cmasso6 我想你可以在output$info 中添加req(tab())
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 2011-09-22
    • 2016-02-01
    • 1970-01-01
    • 2019-09-21
    • 2022-12-16
    • 2022-12-26
    相关资源
    最近更新 更多