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

drm*_*iod 3 r shiny

是否可以dataTableOutput在多个标签中重复使用?我发现的唯一可能性是使用一种布局,该布局dataTableOutput具有自己的行,但我不希望它位于所有选项卡的上方。

如果我只打了dataTableOutput多次电话,则没有任何表格可以打印。

编辑:

感谢daattali的回答,我差不多完成了。我之前没有提到的唯一事情是,我需要以某种方式同步两个表。目前,当我尝试通过代理彼此更新时,在短时间内选择许多行时,整个系统就会出现故障。

Dea*_*ali 6

您不能使用相同的ID(因为在同一页面上不能有两个具有相同ID的元素),但是您可以做的是一次将表生成为一个反应性值,然后在渲染器中简单地返回该值表函数。这样的好处是只运行一次用于生成表的代码,然后在所需的任意多个输出中重新使用该表。

例:

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)
Run Code Online (Sandbox Code Playgroud)