r闪亮的操作按钮和数据表输出

sym*_*246 2 r shiny

选择一些简单的条件后,一旦单击动作按钮,我想要一个输出数据表。

该代码无需输入操作按钮即可工作。一旦包含observeEvent函数,就不再生成结果。请参见下面的示例代码。

注意:删除行observeEvent(input$gobutton,{和相应的})行将产生正确的输出。

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)
Run Code Online (Sandbox Code Playgroud)

Por*_*hop 5

换成一个eventReactive

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)
Run Code Online (Sandbox Code Playgroud)

  • 观察者就像反应式表达式一样,它可以读取反应式值并调用反应式表达式,并且在这些依赖项更改时将自动重新执行。但是与反应式表达式不同,它“不会产生结果”,并且不能用作其他反应式表达式的输入。因此,观察者仅对他们的副作用有用(例如,执行I / O)。https://shiny.rstudio.com/reference/shiny/latest/observe.html (6认同)