【发布时间】:2016-10-24 18:35:08
【问题描述】:
我想知道处理动态数量的数据表的最佳做法是什么。这是一个玩具示例:
library(shiny)
library(DT)
ui <- shinyUI(fluidPage(
mainPanel(
sliderInput("number","Number of tables",1,10,1,1),
uiOutput("tables")
)))
server <- shinyServer(function(input, output, session) {
observe({
lapply(seq_len(input$number), function(i) {
output[[paste0("table",i)]] <- DT::renderDataTable(head(mtcars))
})
})
output$tables <- renderUI({
lapply(seq_len(input$number), function(i) {
DT::dataTableOutput(paste0("table",i))
})
})
})
# Run the application
shinyApp(ui = ui, server = server)
这种方法有点生硬,因为无论何时添加或删除单个数据表,您都必须重新呈现所有数据表。
有没有更好的方法来动态生成输出,不需要在循环中创建所有输出,因此每次发生更改时都重新创建所有输出?
【问题讨论】:
-
我认为 Shiny 0.14 中的
insertUI和removeUI会起作用。 -
谢谢@warmoverflow。