2

我正在创建一个带有 R markdown 的 html 文档,其中包含一些表格。在表的一列具有字符值的情况下,如何确保该列足够宽以包含整个字符串而不换行?我尝试在下面使用,但即使参数是kableExtra,似乎也没有使用参数。widthcolumn_specbold

library(data.table)
csd <- fread('  Oct-17  Sep-17  Aug-17  Jul-17  Jun-17  May-17  Apr-17  Mar-17  Feb-17  Jan-17  Dec-16  Nov-16  Oct-16  Sep-16  2017 YTD    2016 YTD    2015 YTD
V1                                                                  
V2      71,687  74,492  72,772  74,785  77,084  72,819  85,367  77,403  85,131  81,585  80,186  89,810  92,871  691,540 1,141,589   1,207,433
V3      22,788  22,355  23,093  23,239  23,821  23,005  25,883  22,168  24,812  23,715  22,708  28,128  29,366  211,164 353,006 411,659
V4  #DIV/0! 31.8%   30.0%   31.7%   31.1%   30.9%   31.6%   30.3%   28.6%   29.1%   29.1%   28.3%   31.3%   31.6%   30.5%   30.9%   34.1%
Some long variable name     30,047  31,910  30,046  31,766  33,455  30,913  37,524  33,683  37,589  36,571  35,590  44,447  44,295  296,933 516,597 528,305
V5      2.89%   1.83%   1.55%   1.97%   2.85%   1.37%   4.95%   5.54%   3.45%   3.12%   1.92%   2.65%   1.69%   3.01%   2.04%   0.61%
V6      867 583 465 626 952 422 1,857   1,866   1,298   1,140   682 1,179   748 8,936   10,539  3,201
V7      29,180  31,327  29,581  31,140  32,503  30,491  35,667  31,817  36,291  35,431  34,908  43,268  43,547  287,997 506,058 525,104
V8      0:23    0:15    0:10    0:20    0:29    0:14    0:53    1:03    0:33    0:24    0:20    0:25    0:17    0:29    0:21    0:06
V9      4:53    4:44    4:46    5:00    5:01    5:05    5:01    5:05    5:01    4:57    5:01    4:49    4:52    4:57    4:47    4:11
V10     86% 91% 94% 89% 83% 91% 78% 72% 81% 86% 89% 85% 92% 85% 89% 94%
V11     99.05%  98.20%  96.40%  97.25%  97.80%  96.50%  95.55%  95.85%  95.65%  96.25%  96.55%  97.75%  97.95%  96.92%  97.33%  98.23%
V12     99.75%  100.00% 99.90%  98.85%  99.00%  98.75%  99.00%  99.55%  99.85%  99.45%  99.20%  97.70%  97.55%  99.41%  98.50%  99.01%
')
csd <- csd[-1,-2]
names(csd)[1] <- 'V0'
words <- c('these','are','some','words','extreme','slightly')

csd[,1] <- replicate(nrow(csd), paste(sample(words, 7, T), collapse = " "))


library(knitr)
library(magrittr)
library(kableExtra)

csd %>% 
          kable('html', digits = 2) %>%
          column_spec(1, bold = T, width = "2600em") %>% 
          kable_styling(bootstrap_options = c("striped", "hover")) 
4

1 回答 1

3

我认为这更像是一个 HTML/css 问题。当 HTML 表格的宽度超过页面宽度时,如果没有必要,它会尝试减小列宽。如果减少 的列数csd,您将看到该width选项开始显示效果。

在这种情况下,一种解决方法是使用该scroll_box函数并为表格提供更宽的绘图区域。

csd %>% 
  kable('html', digits = 2) %>%
  column_spec(1, bold = T, width = "2600em") %>% 
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  scroll_box(width = "2000px")

更新

另一个 hacky 但“真实”的解决方案是强制单元格显示为内联块

csd %>% 
  kable('html', digits = 2) %>%
  column_spec(1, bold = T, width = "2600em; display: inline-block;") %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))  

更新

这个display: inline-block东西现在默认包含在 kableExtra (dev ver) 中。

如果display: inline-block;默认情况下,表格列的标题行将失去自动调整其宽度的能力。当表格又小又紧时,它会破坏 column_spec。结果,我从默认中删除了这一行。如果需要强制设置宽度。你总是可以使用我上面提供的方法。

于 2017-10-11T14:51:08.807 回答