2016-05-02 21 views
10

Ho una tabella con più variabili con nomi di variabili lunghe e stringhe di caratteri lunghe come valori per più osservazioni. Come posso impostare esplicitamente ciascuna larghezza di colonna, quindi la tabella resa in HTML tramite R Markdown non raddoppierà automaticamente le linee per adattare la stringa lunga alla cella?Come posso impostare esplicitamente la larghezza della colonna per le tabelle R DT usando R Markdown?

Sarebbe OK per me avere alcune colonne che sono abbastanza lunghe, anche se la tabella non è in grado di mostrare tutte le colonne allo stesso tempo. Ma, posso sempre usare l'estensione 'FixedColumns' e la barra di scorrimento per spostarsi a destra per più colonne.

I codici Attualmente sto usando per impostare la larghezza della colonna sono:

options = list(
    autowidth = TRUE, 
    columnDefs = list(list(width = '600px', targets = c(1, 2))), 

Ma non importa quanto ho impostato la larghezza in modo diverso, il tavolo finale reso fai un aspetto troppo diverso a tutti.

Ecco alcuni codici riproducibili che ho utilizzato in rmarkdown, inclusa la generazione dei dati di simulazione e dell'oggetto DT in HTML.

```{r} 
# generate data 
vec_1 <- c("DHDH, DDDDDTV", 
     "DHDH, DDDDDTV, TT&T", 
     "DHDH, DDDDDTV, TT&T, Caaater", 
     "DHDH, DDDDDTV, TT&T, Caaater, Cxx", 
     "DHDH, DDDDDTV, TT&T, Cxx", 
     "DHDH, DDDDDTV, Caaater",   
     "DHDH, DDDDDTV, Caaater, Cxx", 
     "DHDH, DDDDDTV, Cxx") 

vec_2 <- c("Some radomn long string aaa bbb ccc dddd aaa bbb ccccccc", 
     "Some radomn long stringa", 
     "Some string aaa bbb", 
     "Some radomn long string aaa bbb ccc dddd aaa bb (A)", 
     "Some radomn long string aaa bbb ccc dddd aaa b (B)", 
     "Some radomn long string aaa bbb ccc dd (D)", 
     "Some radomn long string aaa bbb ccc ddd (D)", 
     "Some radomn long string aaa bbb ccc d (D)", 
     "Some radomn long string aaa bbb ccc ddd aaa bbb dddaa (G)", 
     "Some radomn long string aaa bbb ccc ddd aaa bbb dddaa(G)", 
     "Some radomn long string aaa bbb ccc ddd aaa bbb ddd (G)", 
     "Some radomn long strin(H)", 
     "Some radomn long string (G)", 
     "Some radomn long (Beee)") 

col_1 <- sort(rep(vec_1, 14)) 
col_2 <- rep(vec_2, 8) 
col_3 <- c(rep(105, 14), rep(29, 14), rep(22, 14), rep(2, 14), 
     rep(10, 14), rep(29, 14), rep(5, 14), rep(8, 14)) 
col_4 <- rnorm(112) 
col_5 <- rnorm(112) 
col_6 <- rnorm(112) 
col_7 <- rnorm(112) 
col_8 <- rnorm(112) 
col_9 <- rnorm(112) 

df <- data.frame(col_1, col_2, col_3, col_4, col_5, col_6, col_7, col_8, col_9) 
``` 

```{r} 
library(DT) 

datatable(
    df, 
    colnames = c("Source Type", "Factors", 
       "Market Counts", "Minimum", "1st Qu", 
       "Median", "Mean", "3rd Qu", "Maximum"), 
    extensions = 'FixedColumns', 
    options = list(
     autowidth = TRUE, 
     columnDefs = list(list(width = '600px', targets = c(1, 2))), 
     pageLength = 14, 
     lengthMenu = c(7, 14, 28, 36), 
     scrollX = TRUE, 
     fixedColumns = TRUE 
     )) %>% 
    formatRound(4:9, digits = 2) 
``` 

Ecco uno screen-shot del DT prodotta in HTML utilizzando i codici di cui sopra: enter image description here

Quello che voglio è quello di impostare la larghezza della colonna per le prime due colonne abbastanza a lungo, in modo che i valori in ogni fila non sarà una confusione come questa. Mi piacerebbe anche che la larghezza per la colonna 4: 9 fosse impostata allo stesso modo. Ma sembra che attualmente la larghezza di queste colonne dipenda dalla lunghezza dei nomi delle variabili, che non sembrano così grandi. Qualche soluzione alternativa che posso fare qui per migliorare? Grazie,

+0

Penso che il problema qui sia essenzialmente lo stesso di [here] (http://stackoverflow.com/questions/34850382/setting-column-width-in-r-shiny-datatable-does-not-work- in-case-of-lots-of-colum? lq = 1): con troppe colonne, le larghezze delle colonne vengono ignorate. –

risposta

1

È possibile ottenere una colonna di una riga aggiungendo il seguente CSS al file HTML:

<style> 
table.display td { white-space: nowrap; } 
</style> 

alternativa creare un file separato .ccs e includerlo con l'intestazione yaml. Vedere il commento di clifton here per ulteriori discussioni sul problema.

Non è stato possibile impostare rapidamente la larghezza delle altre colonne. Ho provato qualcosa di simile:

```{r} 
library(DT) 

datatable(
    df, 
    colnames = c("Source Type", "Factors", 
       "Market Counts", "Minimum", "1st Qu", 
       "Median", "Mean", "3rd Qu", "Maximum"), 
    extensions = 'FixedColumns', 
    options = list(
     autowidth = FALSE, 
     columnDefs = list(list(width = '600px', targets = c(1, 2)), 
          list(width = '100px', targets = 3:(ncol(df) - 2))), 
     pageLength = 14, 
     lengthMenu = c(7, 14, 28, 36), 
     scrollX = TRUE, 
     fixedColumns = TRUE 
     )) %>% 
    formatRound(4:9, digits = 2) 
``` 

penso che è legato alle osservazioni here per quanto riguarda l'impostazione della larghezza quando si utilizza l'estensione fixedColumns.

Problemi correlati