2015-08-21 16 views
5

Non riesco a controllare la larghezza di un datatable che ho aggiunto a un'app lucida utilizzando la funzione dataTableOutput(). Ho provato ad usare il parametro width all'interno della funzione ma non modifica nulla nell'output e non c'è errore ~ ​​non mi sta dicendo che sta ignorando il parametro width.Controllo della larghezza della tabella in Shiny dataTableOutput

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) 
+0

non vedo un 'argomento width' in' lucido :: dataTableOutput', ma sembra che 'dataTableOutput' dal pacchetto DT ha uno. Hai caricato il pacchetto DT dopo il lucido? Puoi anche usare 'DT :: dataTableOutput'. – aosmith

+0

Se uso 'DT' invece di' lucido' la tabella dati sarà ancora reattiva? – Collin

+0

provare [questa risposta SO] (https://stackoverflow.com/questions/31921238/shrink-dtdatatableoutput-size) – Rivka

risposta

11

dataTableOutput non ha una larghezza argomento. È possibile utilizzare column all'interno di un fluidRow con larghezza di argomento, fornendo un intero compreso tra 1 e 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) 

Opzioni dalla libreria JavaScript DataTable può essere passato direttamente tramite renderDataTable opzioni argomento. Ad esempio, l'impostazione di scrollX su true consente alle tabelle di scorrere.

+0

Ho provato a utilizzare le colonne e aggiornato il mio esempio di conseguenza, sembra che 'dataTableOutput' non voglia cooperare – Collin

+0

Nel tuo esempio originale hai avuto un gran numero di colonne. lucido sta ancora rendendo una pagina web, quindi se le colonne sono troppo larghe per rientrare in un sottoinsieme del riquadro, la tabella verrà visualizzata usando la porzione della pagina disponibile. – CSJCampbell

+0

Nell'esempio aggiornato, 'textOutput' viene visualizzato nella metà corretta e' dataTableOutput' sta bloccando il testo nel browser Firefox. Quale comportamento preferiresti vedere? – CSJCampbell

3

Se si utilizza il pacchetto "DT" R, e il rispettivo DT::dataTableOutput e DT::renderDataTable, è possibile utilizzare un'opzione "larghezza" con quelle chiamate, che apparentemente possono essere un% (ad es. Larghezza = "100%") o pixel (larghezza = 300) che dovrebbero ottenere il controllo desiderato.

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

Nota da quella pagina:

Importante: Assicurarsi di utilizzare il DT :: prefisso quando si chiama dataTableOutput e renderDataTable in modo che le versioni DT di queste funzioni sono garantito per essere chiamato, invece delle versioni Shiny deprecate. Se ci si assicura di librare (DT) dopo la libreria (lucido), normalmente le versioni DT dovrebbero sovrascrivere le versioni lucide se non si utilizza il prefisso 01 :: DT :: (in caso di dubbi, utilizzare questo prefisso, fino a quando non rimuovere queste funzioni da lucido)

Problemi correlati