sym246 sym246 - 3 years ago 201
R Question

r Shiny action button and data table output

I would like an output data table after selection of some simple criteria, once an action button is clicked.

The code works without the action button as an input. As soon as I include the

observeEvent
function, the result is no longer generated. See example code below.

Note: Removing the line
observeEvent(input$gobutton,{
and the corresponding
})
will produce the correct output.

library(shiny)

ui <- fluidPage(
fluidRow(column(6,div(checkboxGroupInput("test1", "Testing buttons",
choices=c("A","B","C"),
selected=c("A","B","C"))))),

hr(),

actionButton("gobutton","Start"),

dataTableOutput("summary_table")

)

server <- function(input,output){

output$summary_table <- renderDataTable({

observeEvent(input$gobutton,{

df=data.frame(col1=input$test1,col2=seq(1,length(input$test1),1))

df
})
})
}

shinyApp(ui=ui, server=server)

Answer Source

Wrap it in a eventReactive instead:

library(shiny)

ui <- fluidPage(
  fluidRow(column(6,div(checkboxGroupInput("test1", "Testing buttons", 
                                           choices=c("A","B","C"),
                                           selected=c("A","B","C"))))),

  hr(),
  actionButton("gobutton","Start"),
  dataTableOutput("summary_table")

)

server <- function(input,output){

  data <- eventReactive(input$gobutton,{
    if(is.null(input$test1)){
      return()
    }

    df <- data.frame(col1=input$test1,col2=seq(1,length(input$test1),1))
    df
  })

  output$summary_table <- renderDataTable({
    data()
  })
}

shinyApp(ui=ui, server=server)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download