每次单击操作按钮后,都需要在数据框中插入新的广告投放名称。
我尝试将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)
第一次,航班名称=达美->单击“开始”按钮 第二次,航班名称=美国航空->单击“执行”按钮 附加值第一次是“否”,第二次是“是”
数据框应如下所示。
增量编号 美国航空是
答案 0 :(得分:0)
将reactiveValues
与observeEvent
结合使用。
可以在观察者中修改反应性值,因此每次按下按钮时都可以将行绑定到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)
}