Mon bloc de données a des noms de colonnes moches, mais lors de l'affichage du tableau dans mon rapport, je veux leurs "vrais" noms, y compris les caractères spéciaux "(", nouvelles lignes, lettres grecques, noms répétés, etc.
Existe-t-il un moyen facile de remplacer les noms dans knitr pour permettre une telle mise en forme?
Ce que j'ai essayé de faire, c'est de supprimer l'impression des noms de trame de données et d'utiliser add_header_above
Pour de meilleurs noms et noms qui s'étendent sur plusieurs colonnes. Certains conseils que j'ai vus disent d'utiliser:
x <- kable(df)
gsub("<thead>.*</thead>", "", x)
pour supprimer les noms de colonne. C'est bien, mais le problème est que lorsque j'ai par la suite add_header_above
, Les noms des colonnes d'origine reviennent. Si j'utilise col.names=rep('',times=ncol(d.df))
dans kable(...)
les noms ont disparu mais la ligne reste, laissant un espace entre mes nouveaux noms de colonnes et le corps du tableau. Voici un morceau de code pour illustrer:
```{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)
```
Je ne sais pas où vous avez obtenu les conseils pour remplacer les noms de domaine, mais cela semble excessivement complexe. Il est beaucoup plus facile d'utiliser simplement l'argument col.names
Intégré dans kable
. Cette solution fonctionne pour les sorties HTML et 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"))
```