繁体   English   中英

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

[英]R knitr Add linebreak in table header kable()

我正在使用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-->

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

有什么建议?

据我所知, 管道表语法不支持单元格中的换行符,所以如果使用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 
-------------------------------------------------------

但这还不够,因为pandoc会自动删除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 
-----------------------------------------------------

有一种方法可以限制列宽,您可以使用它来帮助在kable中实现此目的。 使用column_spec() ,您可以在其中指定哪些列,以及不同单位的宽度,如cm,in,em。

所以似乎kable将<>转换为HTML等价物,即"&lt;" "&gt;" ,所以我有一个快速修复,只要你实际上不需要<>其他任何地方。 这使我能够在表格的列标题中获得换行符。

基本上,一旦你的表完成,只需替换"&lt;" "&gt;" 在<和>的HTML中,然后将其另存为HTML文件。 像这样:

tbl_output <- gsub("&lt;", "<", tbl_output)
tbl_output <- gsub("&gt;", ">", tbl_output)

write(tbl_output, "TableOutput.html")

其中tbl_output是来自kable的输出。

另外,特别是如果你需要在你的表使用<>在其他地方,你可以创建自己的字符串一个换行符,然后GSUB它<br>在最后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM