web-dev-qa-db-fra.com

Contrôle de la largeur du tableau dans Shiny dataTableOutput

Je ne parviens pas à contrôler la largeur d'une table de données que j'ai ajoutée à une application brillante à l'aide de la fonction dataTableOutput(). J'ai essayé d'utiliser le paramètre width dans la fonction mais cela ne change rien dans la sortie et il n'y a pas d'erreur ~ ça ne me dit pas qu'il ignore le paramètre width.

library(shiny)
library(shinythemes)

ui <- fluidPage(theme = shinytheme("Spacelab"),
            fluidRow(
              column(6,dataTableOutput(outputId = "table")),
              column(6,p(textOutput("para")))
  )
)

server <- function(input, output){

  df <- as.data.frame(matrix(0, ncol = 15, nrow = 20))

  output$table <- renderDataTable({df})

  output$para <- renderText({
    text <- rep(x = "Hello World",1000)
  })
}
shinyApp(ui = ui,server = server)
15
Collin

dataTableOutput n'a pas de largeur d'argument. Vous pouvez utiliser column dans un fluidRow avec une largeur d'argument, fournissant un entier compris entre 1 et 12.

library(shinythemes)
ui <- fluidPage(theme = shinytheme("Spacelab"),
    fluidRow(
        column(
            dataTableOutput(outputId = "table"), width = 6)
    )
)

server <- function(input, output){
    df <- as.data.frame(matrix(0, ncol = 20, nrow = 5))
    output$table <- renderDataTable({df}, 
        options = list(scrollX = TRUE))
}
shinyApp(ui = ui,server = server)

Les options de la bibliothèque JavaScript DataTable peuvent être transmises directement via les options d'argument renderDataTable. Par exemple, définir scrollX sur true permet aux tables de défiler.

25
CSJCampbell

Si vous utilisez le package "DT" R et le DT::dataTableOutput et DT::renderDataTable, vous pouvez utiliser une option "largeur" ​​avec ces appels, qui peut apparemment être un% (par exemple largeur = "100%") ou des pixels (largeur = 300) qui devraient vous donner le contrôle que vous voulez.

Voir: https://rstudio.github.io/DT/shiny.html

Remarque à partir de cette page:

Important: veillez à utiliser le préfixe DT :: lorsque vous appelez dataTableOutput et renderDataTable afin que les versions DT de ces fonctions soient garanties d'être appelées, au lieu des versions Shiny obsolètes. Si vous vous assurez de la bibliothèque (DT) après la bibliothèque (brillant), normalement les versions DT devraient juste remplacer les versions brillantes si vous n'utilisez pas le préfixe DT :: (en cas de doute, utilisez ce préfixe, jusqu'à ce que nous supprimions complètement ces fonctions de brillant)

7
user6585640