Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

r Shiny action button and data table output

Tags:

r

shiny

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)
like image 722
sym246 Avatar asked Oct 02 '17 07:10

sym246


1 Answers

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)
like image 168
Pork Chop Avatar answered Nov 14 '22 10:11

Pork Chop