【发布时间】:2018-12-28 04:09:28
【问题描述】:
我的数据框有丑陋的列名,但是在我的报告中显示表格时,我想要它们的“真实”名称,包括特殊字符'('、换行符、希腊字母、重复名称等。
有没有一种简单的方法可以替换 knitr 中的名称以允许这种格式?
建议的解决方案
我试图做的是抑制数据框名称的打印,并使用add_header_above 以获得更好的名称和跨越多列的名称。我看到的一些建议说要使用:
x <- kable(df)
gsub("<thead>.*</thead>", "", x)
删除列名。这很好,但问题是当我随后add_header_above 时,原来的列名又回来了。如果我在kable(...) 中使用col.names=rep('',times=ncol(d.df)),则名称消失但行仍然存在,从而在我的新列名和表体之间留下空隙。这是一个代码块来说明:
```{r functions,echo=T}
drawTable <- function(d.df,caption='Given',hdr.above){
require(knitr)
require(kableExtra)
require(dplyr)
hdr.2 <- rep(c('Value','Rank'),times=ncol(d.df)/2)
x <- knitr::kable(d.df,format='latex',align='c',
col.names=rep('',times=ncol(d.df))) %>%
kable_styling(bootstrap_options=c('striped','hover',
'condensed','responsive'),position='center',
font_size = 9,full_width=F)
x %>% add_header_above(hdr.2) %>%
add_header_above(hdr.above)
}
```
```{r}
df <- data.frame(A=c(1,2),B=c(4,2),C=c(3,4),D=c(8,7))
hdr.above <- c('A2','B2','C2','D2')
drawTable(df,hdr.above = hdr.above)
```
【问题讨论】:
-
您希望您的表格采用什么输出格式? HTML 还是 PDF?您在
kable命令中声明latex,然后在kable_styling中为表格提供HTML 选项 -
如果可能的话,我想要一个适用于两者的通用解决方案。
标签: r r-markdown kable kableextra