在 Shiny 应用程序中更新数据集(稍后使用)

Updating dataset (to be used later) within Shiny app

我需要一个数据集在用户点击按钮后持续更新。我希望下面的代码能够实现这一点,但它只是忽略了我代码中的更新部分。这是代码:

library(shiny)
rm(list = ls())

x = 0.1
y = 0.1
df = data.frame(x,y) #Just define a simple dataset


ui <- shinyUI(fluidPage(
  
  actionButton("run", "Run"),
  
        tableOutput('table')  
))

server <- shinyServer(function(input, output, session) {
  
  df_new = eventReactive(input$run, {
    
 
      
      z = runif(2)

      if(isFALSE(exists("df_new()"))){ #Check if there is new data

        return(rbind(df,z)) #1st update
      }
      else{
        
        return(rbind(df_new(),z)) #Update the dataset
        
        }
      
    })
    
    
   
    output$table = renderTable({
      
              
             df_new()
              
    })

  
  
  
})

shiny::shinyApp(ui, server)

我希望应用在每次 运行 时向之前的行添加新行,因此行数应始终为 #of clicks + 1。知道这是否可能吗?

您可以使用 reactiveValobserveEvent:

library(shiny)

x = 0.1
y = 0.1
df = data.frame(x,y) #Just define a simple dataset


ui <- shinyUI(fluidPage(
  
  actionButton("run", "Run"),
  
  tableOutput('table')  
))

server <- shinyServer(function(input, output, session) {
  
  df_new = reactiveVal(df)
  
  observeEvent(input$run, {
    z = runif(2)
    df_new(rbind(df_new(),z))
  })

  output$table = renderTable({
    df_new()
  })
})

shiny::shinyApp(ui, server)