在R/Kable() HTML表格中使列名换行

14

我想从一个 R 数据框中生成 HTML 表格输出,但是无法使一些较长的列名在多行标题行中换行。以下是当前代码和输出的最小可重现示例:

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

data(iris)

将 iris 表格的前 5 行输出为 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()

当我在浏览器中打开已保存的文件时,我的标题行只有一行,但我需要文字换行成一到两行(因此是'Petal Width Long Col Name')。
函数kable_styling有一个参数bootstrap_options,但那似乎不具备我需要的功能。我还尝试在列名内插入\n,但没有成功。
如果这是解决方案的一部分,我并不排斥使用xtable包代替kable/knitr。

请加载所有运行问题代码所需的库。我猜你想使用knitr库中的kable函数? - Gregor de Cillia
1个回答

14

使用 HTML 语法可以创建换行。为了使其起作用,您需要将 kableescape 参数设置为 FALSE

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()

非常感谢,工作完美。优雅且可定制(易于控制换行的位置)。?kable文档中关于escape参数的说明是在生成HTML或LaTeX表格时转义特殊字符。这对我来说有点模糊不清。它能用于呈现字符串列值中的其他HTML标签吗,比如 <strong> - Max Power
我认为这个可以,尽管我过去只使用过类似的框架,而不是kable本身。 - Gregor de Cillia
有趣,谢谢。我可以问一下你从r数据框中创建HTML表的首选工具是什么吗? - Max Power
1
这是来自DT包的datatable。我强烈建议你去看看它。 - Gregor de Cillia
让我们在聊天中继续这个讨论 - Gregor de Cillia
你好!非常感谢您的回答。在pdf/LaTex中是否有与<br/>相当的东西?当我使用<br/>时,它们在控制台中运行时结果完美,但却无法在pdf输出中打印。非常感谢! - user3047435

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接