在R/Kable()HTML表中获取列名称

Max*_*wer 9 r html-table xtable knitr

我正在尝试从R数据框生成HTML表输出,并且无法获取一些长列名称来换行多行标题行.这是我当前代码和输出的最小可重现示例:

library(datasets)
library(knitr)
library(kableExtra)

data(iris)
Run Code Online (Sandbox Code Playgroud)

将前5行iris表输出为html格式表:

sink('my_file_path.html')
names_spaced <- c('Sepal Length', 'Sepal Width', 'Petal Length', 
                  'Petal Width Long Col Name', 'Species')

kable(head(iris), 
      format='html', 
      digits=1, 
      row.names=FALSE, 
      align='lccccc', 
      col.names = names_spaced)

sink()
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中打开保存的文件时,我的标题行只是一行,但我需要将这些单词换行到一行或两行(因此'Petal Width Long Col Name').

kable_styling函数有一个参数,bootstrap_options但似乎没有我需要的东西.我也尝试\n在列名中插入但无济于事.

非常感谢解决方案.不反对使用xtable包而不是kable/ knitr如果这是解决方案的一部分.

Gre*_*lia 8

可以使用HTML语法创建换行符.为了这一目标的工作,你必须设置escape的参数kableFALSE.

library(knitr)
data(iris)

sink('my_file_path.html')
names_spaced <- c(
  'Sepal Length', 'Sepal Width', 'Petal Length', 
  'Petal Width<br/> Long Col Name',                  ## add <br/>
  'Species')

kable(head(iris), 
      format='html', 
      digits=1, 
      row.names=FALSE, 
      align='lccccc', 
      col.names = names_spaced,
      escape = FALSE)                                ## disable html escape to 
                                                     ## make <br/> work

sink()
Run Code Online (Sandbox Code Playgroud)