我有两个用
DT::datatable()
生成的 Shiny 表。这些表具有相同的维度,但来自不同的数据框,因此具有不同的列(与下面的虹膜数据不同)。表格将位于同一页上。
我可以链接两个表格,以便如果我按一个表格的“下一步”按钮(或页码),两个表格会同时更改吗?也就是说,按“下一步”会将两个表移至下一页。按 3 将两个表格移至第 3 页。
在下面的示例中,我显示了两个表的分页控件,但如果我可以链接它们,那么仅显示上表的控件会更清晰。
library(shiny)
library(DT)
ui <- fluidPage(
h5("Table 1"),
DTOutput("table1"),
h5("Table 2"),
DTOutput("table2")
)
server <- function(input, output, session) {
output$table1 <- renderDT({
datatable(
iris[iris$Species == "setosa", ],
options = list(
dom = '<"top" p>',
pageLength = 6)
)
})
output$table2 <- renderDT({
datatable(
iris[iris$Species == "virginica", ],
options = list(
dom = "tp",
pageLength = 6)
)
})
}
shinyApp(ui = ui, server = server)
创建于 2023-11-07,使用 reprex v2.0.2
您可以使用
input$table1_rows_current
链接两个表。然后使用 displayStart
选项根据另一个表中的显示来更新表中的显示。试试这个
library(shiny)
library(DT)
ui <- fluidPage(
h5("Table 1"),
DTOutput("table1"),
h5("Table 2"),
DTOutput("table2")
)
server <- function(input, output, session) {
rv <- reactiveValues(
table1CurrentPage = 0,
table2CurrentPage = 0
)
output$table1 <- renderDT({
datatable(
iris[iris$Species == "setosa", ],
options = list(
dom = '<"top" p>',
displayStart = rv$table1CurrentPage,
pageLength = 6)
)
})
output$table2 <- renderDT({
datatable(
iris[iris$Species == "virginica", ],
options = list(
dom = "tp",
displayStart = rv$table2CurrentPage,
pageLength = 6)
)
})
observeEvent(input$table2_rows_current, {
rv$table1CurrentPage <- input$table2_rows_current[1] - 1
})
observeEvent(input$table1_rows_current, {
rv$table2CurrentPage <- input$table1_rows_current[1] - 1
})
}
shinyApp(ui = ui, server = server)