R knitr在表头kable()中添加换行符

Wie*_*314 6 html r knitr

我正在使用knitr生成一些报告.我使用kable在文档中生成HTML表.在标题中,我想使用换行符(或其他html标记)来增强表格

<!--begin.rcode results='asis'
s <- rbind(c(1,2,3,4),c(1,2,3,4),c(1,2,3,4))
kable(s, col.names=c("Try Newline\nn","Try HTML break<br>%","Past 6 months\nn","\n%"))
end.rcode-->
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在尝试不同的选择而没有太大成功.在我的结果中,换行符(\n)只是在HTML源代码中的换行符中翻译.
标签被翻译为HTML特殊字符.

有什么建议?

dar*_*zig 10

据我所知,管道表语法不支持单元格中的换行符,因此如果使用pandoc将markdown转换为HTML(这是RStudio使用的),那么您最好选择一些功能更丰富的表语法,例如multilinegrid.不知道怎么做kable,但pander支持那些:

> library(pander)
> colnames(s) <- c("Try Newline\nn","Try HTML break<br>%","Past 6 months\nn","\n%")
> pander(s, keep.line.breaks = TRUE)

-------------------------------------------------------
 Try Newline   Try HTML break<br>%   Past 6 months   % 
      n                                    n           
------------- --------------------- --------------- ---
      1                 2                  3         4 

      1                 2                  3         4 

      1                 2                  3         4 
-------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

但这还不够,因为换行符会自动删除pandoc,所以你必须根据相关的文档放置强硬的换行符("反斜杠后跟换行符").例如,以下代码按预期转换为HTML:

> colnames(s) <- c("Try Newline\\\nn","Try HTML break\\\n%","Past 6 months\\\nn","\\\n%")
> pander(s, keep.line.breaks = TRUE)

-----------------------------------------------------
 Try Newline\   Try HTML break\   Past 6 months\   \ 
      n                %                n          % 
-------------- ----------------- ---------------- ---
      1                2                3          4 

      1                2                3          4 

      1                2                3          4 
-----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

  • 对于 knit v1.13,如果将输出指定为 html,则硬线中断可与 kable 一起使用: `knitr::kable(s, format = "html")` (3认同)