如何使用R标记显式设置R DT表的列宽?

如何使用R标记显式设置R DT表的列宽?,r,knitr,r-markdown,dt,R,Knitr,R Markdown,Dt,我有一个包含多个变量的表,其中包含长变量名和长字符串作为多个观察值。如何显式设置每个列宽,使通过R标记呈现为HTML的表不会自动将行加倍以将长字符串放入单元格 即使表格不能同时显示所有的列,我也可以选择一些足够长的列。但是,我始终可以使用“FixedColumns”扩展名和滚动条向右移动更多列 我当前用于设置列宽的代码有: options = list( autowidth = TRUE, columnDefs = list(list(width = '600px', targe

我有一个包含多个变量的表,其中包含长变量名和长字符串作为多个观察值。如何显式设置每个列宽,使通过R标记呈现为HTML的表不会自动将行加倍以将长字符串放入单元格

即使表格不能同时显示所有的列,我也可以选择一些足够长的列。但是,我始终可以使用“FixedColumns”扩展名和滚动条向右移动更多列

我当前用于设置列宽的代码有:

options = list(
    autowidth = TRUE,
    columnDefs = list(list(width = '600px', targets = c(1, 2))),
但无论我如何设置不同的宽度,最终渲染的表看起来都没有太大的不同

下面是我在rmarkdown中使用的一些可重用代码,包括在HTML中生成模拟数据和DT对象

```{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)
```
`{r}
#生成数据

vec_1通过将以下css添加到html文件中,可以获得一行列:

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

我认为这与使用
fixedColumns
扩展时关于设置宽度的观点有关。

我认为这里的问题本质上与:列太多,忽略了列宽。
```{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)
```