首页 > 解决方案 > R Shiny DT - 将 pageLength 更改为选定的行

问题描述

选择 DT DataTable 的一行时,是否可以隐藏所有其他行 - 然后再次选择该行时,这些隐藏的行再次可见?

调查 pageLength 选项,它可以在运行时由用户操作,它似乎无法通过代理访问:文档没有提到它。

标签: shinydt

解决方案


我提供以下解决方案。这是表格和操作按钮。当您选择行并单击按钮时,您可以看到一个弹出窗口,其中包含有关所选行的详细信息。

library(shiny)
library(DT)

# 1. UI
ui <- fluidPage(
  fluidRow(actionButton("md_data_profile", "Details for selected row")),
  fluidRow(dataTableOutput("dt_data"))
)

# 2. Server
server <- function(input, output) {

  # 1. Data set
  df_data <- reactive({
    mtcars
  })

  # 2. Data table
  output$dt_data <- renderDataTable(
    datatable(df_data()))

  # 3. Details as Popup window
  observeEvent(input$md_data_profile, {

    # 3.1. Get selected rows
    selected_row <- input$dt_data_rows_selected

    # 3.2. Process selected row
    if(!is.null(selected_row)){
      df <- df_data()[selected_row, ]
      popup_str <- paste0("Mpg: ", df$mpg)
    } else {
      popup_str <- "Please, select row to see details"
    }

    # 3.3. Create model dialog window
    showModal(modalDialog(title = "Data profile", HTML(popup_str), easyClose = TRUE))
  })
}

# 3. Application
shinyApp(ui = ui, server = server)

推荐阅读