替换 kable/R markdown 中的列名

标签 r r-markdown kable kableextra

我的数据框有丑陋的列名,但是在我的报告中显示表格时,我想要它们的“真实”名称,包括特殊字符'('、换行符、希腊字母、重复名称等。

是否有一种简单的方法可以替换 knitr 中的名称以允许这种格式?

建议的解决方案

我试图做的是禁止打印数据框名称并使用 add_header_above以获得更好的名称和跨越多列的名称。我见过的一些建议说要使用:

x <- kable(df)
gsub("<thead>.*</thead>", "", x) 

删除列名。没关系,但问题是当我随后 add_header_above ,原来的列名又回来了。如果我使用 col.names=rep('',times=ncol(d.df))kable(...)名称消失了,但行仍然存在,在我的新列名和表体之间留下了空隙。这是一个代码块来说明:
```{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)
```

enter image description here

最佳答案

我不确定您从哪里得到替换行名的建议,但它似乎过于复杂。使用内置的 col.names 会容易得多kable 中的参数.此解决方案适用于 HTML 和 LaTeX 输出:

---
output:
  pdf_document: default
  html_document: default
---
```{r functions,echo=T}
require(knitr)

df <- data.frame(A=c(1,2),B=c(4,2),C=c(3,4),D=c(8,7))
knitr::kable(df, 
             col.names = c("Space in name",
                           "(Special Characters)",
                           "$\\delta{m}_1$",
                           "Space in name"))

```

PDF输出 :
enter image description here

HTML 输出 :
enter image description here

关于替换 kable/R markdown 中的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51432502/

相关文章:

r-markdown - RMarkdown - 使用 kable 的表格中的不同字体类型?

r - 是否可以在 pdf 中使用 R knitr::kable 生成的表格中添加垂直线?

r - 将 R 数据框中特定列的文本大写

r - data.frame(tag=value, ...) 的意外行为

在 RMarkdown 中引用一个简单的表格

latex - Latex 包 "indentfirst"无法在 R-markdown 中工作

r - 如何从 kableExtra kbl 表中删除 NA?

r - 改变 dplyr 中的 tibble 列以保存标签文本而不是值

c# - 使用 R(D)COM 将 R 与 C# 集成

r - 如何使用 knit 在 RMD 中循环渲染传单 map