在表头添加换行符()



我正在使用knitr生成一些报告。我使用able在文档中生成一个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 Newlinenn","Try HTML break<br>%","Past 6 monthsnn","n%"))
end.rcode-->

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

有什么建议吗?

据我所知,管道表语法不支持单元格中的换行,所以如果使用pandoc将markdown转换为HTML(这是RStudio使用的),那么你最好选择一些功能更丰富的表语法,例如multilinegrid。不确定kable如何做到这一点,但pander支持那些:

> library(pander)
> colnames(s) <- c("Try Newlinenn","Try HTML break<br>%","Past 6 monthsnn","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会自动删除换行符,所以你必须根据相关文档设置硬换行符("反斜杠后跟换行符")。例如,以下代码按预期转换为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 
-----------------------------------------------------

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

所以看起来able将<>转换为HTML等效,即"&lt;""&gt;",所以我有一个快速修复,只要你实际上不需要<>在其他地方工作。这使得我可以在表格的列标题中使用换行符。

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

tbl_output <- gsub("&lt;", "<", tbl_output)
tbl_output <- gsub("&gt;", ">", tbl_output)
write(tbl_output, "TableOutput.html")

其中tbl_output为able的输出。

或者,特别是如果您需要在表的其他地方使用<>,您可以为换行符创建自己的字符串,然后在末尾为<br>创建gsub。

最新更新