Любая библиотека в R Shiny, которая предоставляет несколько имен столбцов и строк? - PullRequest
0 голосов
/ 14 ноября 2018

Я ищу библиотеку в R, которая может генерировать результаты, как показано на рисунке, т.е. несколько имен столбцов и строк . В настоящее время я использую rpivotTable и DT :: Datatable для той же цели и создаю ShinyApp , используя их.

Но проблема , с которой я столкнулся с ними, заключается в экспорте вывода в excel с использованием ShinyApp, который либо идет с неправильным повторением заголовков, либо пропуском заголовков . например, когда я загружаю вывод Iris, как указано в кодах ниже, я не получаю верхние заголовки Sepal и Petal.

Мне нужно это

X

library(shiny)
library(DT)

iris<-iris[,c(5,1:4)]

ui =basicPage(
tags$head(
tags$style(type = "text/css",
           HTML("th { text-align: center; }")
)
),

selectInput(inputId = "Species", 
          label = "Species:",
          choices = c("All",
                      unique(as.character(iris$Species)))),


h2('Iris Table'),
DT::dataTableOutput('mytable')
)


server = function(input, output) {
output$mytable = DT::renderDataTable({

  # a custom table container
  sketch = htmltools::withTags(table(
    class = 'display',
    thead(
      tr(
        th(rowspan = 2, 'Species'),
        th(colspan = 2, 'Sepal'),
        th(colspan = 2, 'Petal')
      ),
      tr(
        lapply(rep(c('Length', 'Width'), 2), th)
      )
    )
  ))

  DT::datatable(filter = "top",  rownames = FALSE, container = sketch,
                extensions = 'Buttons',
                escape = FALSE,
                options = list(dom = 'Bfrtip',
                               buttons = 
                                 list('colvis', list(
                                   extend = 'collection',
                                   buttons = list(list(extend='csv',
                                                       filename = 
'hitStats'),
                                                  list(extend='excel',
                                                       filename = 
'hitStats'),
                                                  list(extend='pdf',
                                                       filename= 
'hitStats'),
                                                  list(extend='copy',
                                                       filename = 
'hitStats'),
                                                  list(extend='print',
                                                       filename = 
'hitStats')),
                                   text = 'Download'
                                 )),
                               scrollX = TRUE,
                               pageLength = nrow(iris),
                               order=list(list(2,'desc'))),               


                 {

                   data<-iris

                   if(input$Species != 'All'){
                     data<-data[data$Species == input$Species,]
                   }



                   # data<-data[,c("Species",input$columns),drop=FALSE]
                   # 

                   data

                 })

})
}


shinyApp(ui = ui, server = server)
...