Как я могу явно установить ширину столбца для таблиц R DT с помощью R Markdown?

у меня есть таблица с несколькими переменными с длинными именами переменных и длинные строки символов в качестве значений для нескольких наблюдений. Как я могу явно установить ширину каждого столбца, чтобы таблица, отображаемая в HTML через R Markdown, автоматически не удваивала строки, чтобы поместить длинную строку в ячейку?

для меня было бы нормально иметь несколько столбцов, которые достаточно длинные, даже если таблица не может показать все столбцы одновременно. Но, я всегда могу использовать Расширение FixedColumns и полоса прокрутки для перемещения вправо на несколько столбцов.

коды, которые я сейчас использую для установки ширины столбца:

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

но независимо от того, как я устанавливаю ширину по-разному, окончательная визуализированная таблица выглядит слишком по-разному.

вот некоторые воспроизводимые коды, которые я использовал в rmarkdown, включая создание макетных данных и объекта DT в 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)
```

вот снимок экрана DT производится в HTML с использованием вышеуказанных кодов: enter image description here

на самом деле я хочу установить ширину столбца для первых двух столбцов достаточно долго, чтобы значения в каждой строке не были такими беспорядочными. Я также хотел бы, чтобы ширина столбца 4:9 была установлена одинаково. Но похоже, что в настоящее время ширина этих столбцов зависит от длины имен переменных, что выглядит не так здорово. Любые обходные пути, которые я могу сделать здесь, чтобы улучшить? Спасибо,

1 ответов


вы можете получить столбец одной строки, добавив следующий css в свой html-файл:

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

альтернативно сделайте отдельный .ccs file и включить его с заголовком yaml. См. комментарий Клифтона здесь для дальнейшего обсуждения вопроса.

Я не смог быстро установить ширину других столбцов. Я попробовал что-то вроде:

```{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)
```

Я думаю, что это связано с очков составила здесь по поводу установки ширина при использовании