在不同的选项卡中使用相同的dataTableOutput

时间:2016-11-23 09:49:26

标签: r shiny

是否有可能在多个标签中重复使用dataTableOutput?我找到的唯一可能是使用dataTableOutput获取自己的行的布局,但我不希望它在所有选项卡上方。

如果我只是多次调用dataTableOutput,则不会打印任何表格。

修改

感谢daattali的回答,我差不多完成了这件事。我之前没有提到的唯一的事情是,我需要在某种程度上同步两个表。目前,当我尝试通过代理互相更新时,整个系统在短时间内选择多行时会出错...

1 个答案:

答案 0 :(得分:4)

您不能使用相同的ID(因为您在同一页面上具有相同ID的两个元素),但您可以做的是将表生成一次作为无效值然后只需在render表函数中返回该值。这样做的好处是只运行一次生成表的代码,并在任意数量的输出中重复使用该表。

示例:

library(shiny)

ui <- fluidPage(
  tabsetPanel(
    tabPanel("tab1", "tab 1", DT::dataTableOutput("table1")),
    tabPanel("tab2", "tab 2", DT::dataTableOutput("table2"))
  )
)

server <- function(input, output, session) {
  table_data <- reactive({
    DT::datatable(iris)
  })
  output$table1 <- DT::renderDataTable(table_data())
  output$table2 <- DT::renderDataTable(table_data())
}

shinyApp(ui = ui, server = server)