R闪亮操作按钮第二次不起作用

问题描述 投票:0回答:2

我已经在R Shiny中创建了以下应用程序

 library(shiny)
 library(data.table)

导入库后,我们现在如下创建用户界面

 ui <- fluidPage(

    pageWithSidebar(
    headerPanel("TestApp"),
    sidebarPanel(
    numericInput(inputId = "n", label = "N:", min = 0, max = 100, value = 50),
    br(),
    actionButton(inputId = "goButton", label = "Go!"),

     actionButton(inputId = "Reset",label =  "Reset")),
    mainPanel(dataTableOutput(outputId = "all") ) ))

这将创建一个具有数字输入和两个按钮的用户界面,一个是执行按钮,另一个是重置按钮

下一步,我们创建服务器并运行应用程序

   server <- function(input, output, session) {

     table_output<-eventReactive(input$goButton,{ ##### WE CREATE THE TABLE OBJECT HERE
     table_output<-data.frame("SLNO"= seq(1:input$n))
     table_output$Col2<-table_output$SLNO^2
     return(table_output)})


     output$all<-renderDataTable({
     table_output()})



        observeEvent(input$Reset, { #### WE EMPTY THE PLOT AREA HERE
         output$all <- renderDataTable({ })})}


       shinyApp(ui = ui, server = server)

当我按“ Go”按钮时,将生成表格。但是,按下“休息”按钮后,尽管更改了输入,表格仍拒绝渲染。我在这里寻求帮助。

r shiny reset
2个回答
0
投票

检查是否适合您:

library(shiny)
library(data.table)

ui <- fluidPage(

  pageWithSidebar(
    headerPanel("TestApp"),
    sidebarPanel(
      numericInput(inputId = "n", label = "N:", min = 0, max = 100, value = 50),
      br(),
      actionButton(inputId = "goButton", label = "Go!"),

      actionButton(inputId = "Reset",label =  "Reset")),
    mainPanel(dataTableOutput(outputId = "all") ) ))

server <- function(input, output, session) {

  table_output <- eventReactive({input$goButton}, data.frame("SLNO" = seq(1:input$n), "Col2" = seq(1:input$n)^2))

  observeEvent(input$goButton, {
    output$all <- renderDataTable({
      table_output()})
  })

  observeEvent(input$Reset, {
    output$all <- renderDataTable({ })})}

shinyApp(ui = ui, server = server)

0
投票

我喜欢在这种情况下使用observeEventreactiveValues

library(shiny)
library(data.table)

ui <- fluidPage(

  pageWithSidebar(
    headerPanel("TestApp"),
    sidebarPanel(
      numericInput(inputId = "n", label = "N:", min = 0, max = 100, value = 50),
      br(),
      actionButton(inputId = "goButton", label = "Go!"),

      actionButton(inputId = "Reset",label =  "Reset")),
    mainPanel(dataTableOutput(outputId = "all") ) ))


server <- function(input, output, session) {

  table_output <- reactiveValues(df = data.frame(SLNO = as.numeric(), Col2 = as.numeric()))


  observeEvent(input$goButton, {
    temp <- table_output$df
    temp <- data.frame("SLNO"= seq(1:input$n))
    temp$Col2 <- temp$SLNO^2
    table_output$df <- temp
  })

  observeEvent(input$goButton, {

    if(nrow(table_output$df) > 1) {

      output$all<-renderDataTable({
      table_output$df})

    }
  }
)


  observeEvent(input$Reset, { #### WE EMPTY THE PLOT AREA HERE
    table_output <- reactiveValues(df = data.frame(SLNO = as.numeric(), Col2 = as.numeric()))
    output$all<-renderDataTable({})

    })
}

shinyApp(ui = ui, server = server)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.