Как я могу добавлять различные подписи к различным таблицам данных в своей панели мониторинга

#r #shiny

Вопрос:

Если я выберу tbl1 из выпадающего списка, он должен иметь заголовок tbl1 с данными table1. Если я выберу tbl2, у него должна быть подпись tbl2 с данными tbl2. Я могу правильно извлекать таблицы данных. Как я уже упоминал «Всего tbl1» в подписи, он отображает общее количество tbl1 для всех отчетов. Пожалуйста, помогите мне в этом.

 library(shiny) 
library(DT)    
library(leaflet)
library(dplyr)


ui <- fluidPage(
  
  selectInput(
    "FILE", 
    "Select the Report:",
    choices = c("tbl1","tbl2","tbl3")),
  
  checkboxGroupInput(
    "col_n",
    "Columns to display:",
    choices = c() # initialize with empty
  ),
  
  DT::dataTableOutput("table_data")  
)

server <- function(input, output,session) {
  
  df <-  reactive ({ 
    switch(input$FILE, 
           "tbl1" = iris, 
           "tbl2" = mtcars,
           "tbl3" = faithful
    )
  })
  
  observeEvent(input$FILE,{
   
    req(df()) 
    
    updateCheckboxGroupInput(
      session,
      "col_n",
      choices = colnames(df()),
      selected = colnames(df())
    )
  })
  title <-  reactive(
    if(input$FILE == "tbl1")
    {
      paste("total tbl1")
    }
    else if(input$FILE ==  "tbl2")
    {
      paste("dtotal tbl2")
    }
  )
observeEvent(input$title,
                     {
                             
                updateCaption(proxy,input$title)
                     }
                

        )
  
  output$table_data <-   DT::renderDataTable({
    req(input$col_n) 
    
    DT::datatable(
      df() %>% select_at(input$col_n),
      rownames = FALSE,
      caption = caption = paste(input$title))
  })
}

shinyApp(ui, server)
 

Ответ №1:

вы можете объявить переменную caption аргументу datatable в paste() таким образом, чтобы получить желаемое решение:

 DT::datatable(
      df() %>% select_at(input$col_n),
      rownames = FALSE,
      caption = paste(input$FILE)
  })
 

Комментарии:

1. Пожалуйста, ознакомьтесь с обновленным кодом . Пожалуйста, поправьте меня, где я отсутствую