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

3
有没有可能在多个选项卡中重复使用dataTableOutput?我找到的唯一可能性是使用一个布局,其中dataTableOutput有自己的行,但我不想让它出现在所有选项卡上方。
如果我只是多次调用dataTableOutput,则不会打印任何表格。
编辑:感谢daattali的答案,我几乎完成了这个问题。我之前没有提到的唯一一件事是,我需要以某种方式同步这两个表格。目前,当我尝试通过代理更新彼此时,在短时间内选择太多行时整个系统会出现错误...

嗨,我在https://dev59.com/C63la4cB1Zd3GeqPICU3遇到了类似的问题。 - Scientist
你找到如何同步这两个表格了吗?这会对我有很大帮助。谢谢。 - Scientist
1
看起来你最终解决了它...我最终只使用了一个表格,并将我的应用程序分散在几个选项卡中... https://butterlab.imb-mainz.de/flydev/?data=embryogenesis - drmariod
很棒的工作!我的表格太宽了,所以我想用工具提示资源来缩小它。 - Scientist
那也是个好主意,下一个项目会记在心里。 - drmariod
1个回答

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)

好的,这听起来不错。我想我必须使用代理来在数据表之间同步所选行,或者有更简单的方法吗? - drmariod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接