Ich habe eine Tabelle mit mehreren Variablen mit langen Variablennamen und langen Zeichenfolgen als Werte für mehrere Beobachtungen. Wie kann ich explizit jede Spaltenbreite festlegen, sodass die Tabelle, die über R Markdown in HTML gerendert wird, die Zeilen nicht automatisch so verdoppelt, dass sie in die Zelle passen?Wie kann ich explizit die Spaltenbreite für R DT-Tabellen mit R Markdown setzen?
Es wäre in Ordnung für mich, einige Spalten zu haben, die lang genug sind, auch wenn die Tabelle nicht alle Spalten gleichzeitig anzeigen kann. Aber ich kann immer die 'FixedColumns'-Erweiterung und die Bildlaufleiste verwenden, um für weitere Spalten nach rechts zu gehen.
Die Codes Ich bin derzeit mit der Spaltenbreite eingestellt sind:
options = list(
autowidth = TRUE,
columnDefs = list(list(width = '600px', targets = c(1, 2))),
Aber egal, wie ich die Breite unterschiedlich festgelegt, die endgültige gerenderte Tabelle doest sehen gar viel anders.
Hier sind einige reproduzierbare Codes, die ich in rmarkdown verwendet habe, einschließlich der Generierung der Mock-Daten und des DT-Objekts 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)
```
Hier ist ein Screen-Shot des in HTML erzeugt DT über Codes:
Was will ich wirklich ist die Spaltenbreite für die ersten zwei Spalten lang genug eingestellt, so die Werte in jeder Reihe wird nicht Krempel so sein. Ich möchte auch, dass die Breite für Spalte 4: 9 gleich eingestellt wird. Aber es sieht so aus, dass die Breite dieser Spalten derzeit von der Länge der Variablennamen abhängt, die nicht so gut aussehen. Irgendwelche Workarounds, die ich hier verbessern kann? Danke,
Ich denke, dass das Problem hier ist im Wesentlichen das gleiche wie [hier] (http://stackoverflow.com/questions/34850382/setting-column-width-in-r-shiny-datatable-does-not-work- In-Fall-von-Losen-of-colum? lq = 1): Bei zu vielen Spalten werden Spaltenbreiten ignoriert. –