以下代码是我原始问题的简单版本。该代码应按顺序执行以下步骤:
- 该表格将显示整个“ mtcars”
- 每次单击“一半”按钮时,它应显示以前数据的一半
- 每次点击Double(双击)按钮时,它应该显示先前数据的Double
“半”按钮在这里起作用,而双按钮仅在第一次起作用。 请帮忙。
library(shiny)
library(DT)
ui <- fluidPage(tabsetPanel(
tabPanel("Table",
actionButton("Half","Click for Half"),
actionButton("Double","Click for Double"),
DTOutput("tbl")
)
))
server = function(input, output, session){
mt_lst <- list(mtcars)
data <- reactiveValues(
tbl = mt_lst[[1]]
)
tbl <- eventReactive(T,data$tbl)
observeEvent(input$Half,{
mt_lst[[length(mt_lst) + 1]] <<- data$tbl[1:(round(nrow(data$tbl)/2)),]
data$tbl <- mt_lst[[length(mt_lst)]]
})
observeEvent(input$Double,{
data$tbl <- mt_lst[[length(mt_lst) - 1]]
})
output$tbl <- renderDT(data$tbl)
}
shinyApp(ui = ui, server = server)