每个动作按钮闪亮后,需要在数据框后附加航班名称

时间:2019-06-12 08:50:42

标签: r shiny

每次单击操作按钮后,都需要在数据框中插入新的广告投放名称。

我尝试将eventreactive用于首次点击,并在eventreactive之外使用了rbind,这是行不通的。

library(shiny)
library(DT)
ui <- fluidPage( 
  titlePanel("Calculator"),
  fluidRow(
    mainPanel(
      h4('Results'),
      tags$hr(),
        tabsetPanel(
          tabPanel("Flight",            
                   textInput("flightname","Enter the flight Name",""),
                   selectInput("addedvalue", "Added Value:",
                               c("No","Yes")),
                   tags$hr(),
                   actionButton("go_fli", "Go")),
          tabPanel("Tactic", 
                   textInput("tacticname","Enter the tactic Name",""),
                   tags$hr(),
                   actionButton("go_tac", "Go"))
        ),
      DT::dataTableOutput("Test_Table")
    )
  ))
server <- function(input, output) {
  Testdata <- data.frame("FlightName" = character(), "AddedValue" = character())

  fli <-eventReactive(input$go_fli,{
    fli <- data.frame("FlightName"=input$flightname, "AddedValue"=input$addedvalue)
  })

  Testdata <- reactive({rbind(fli(),Testdata())})

  output$Test_Table = renderDataTable(Testdata())

}
shinyApp(ui=ui, server=server)

第一次,航班名称=达美->单击“开始”按钮 第二次,航班名称=美国航空->单击“执行”按钮 附加值第一次是“否”,第二次是“是”

数据框应如下所示。

增量编号 美国航空是

1 个答案:

答案 0 :(得分:0)

reactiveValuesobserveEvent结合使用。

可以在观察者中修改反应性值,因此每次按下按钮时都可以将行绑定到data.frame

代码:

server <- function(input, output) {
  # Initialize reactive values
  rv <- reactiveValues(fli = data.frame("FlightName" = character(), "AddedValue" = character()))

  observeEvent(input$go_fli, {
    # Bind new row to rv$fli
    rv$fli <- rbind(
      rv$fli, 
      data.frame("FlightName"=input$flightname, "AddedValue"=input$addedvalue)
    )
  })

  output$Test_Table <- renderDataTable(rv$fli)

}