Je voulais juste mettre à jour ceci avec ce que j'ai décidé de faire. J'utilise actuellement le package hwriter
pour imprimer des tables et j'utilise les fonctionnalités row.*
et col.*
pour ajouter des classes CSS à différents éléments. Ensuite, j'ai écrit du CSS personnalisé pour afficher comme je le voulais. Donc, voici un exemple au cas où quelqu'un d'autre rencontre quelque chose de similaire.
Tout d'abord, créez un fichier qui fera le knitting
et convertira le Markdown en HTML :
FICHIER : file_knit.r
#!/usr/bin/env Rscript
library(knitr)
library(markdown)
knit("file.Rmd")
markdownToHTML("file.md","file.html",stylesheet="~/custom.css")
Ensuite, créez le fichier Markdown réel :
FICHIER: file.Rmd
Rapport sur les choix de fruits vs. d'animaux
==================================
Il s'agit d'un rapport sur les choix de fruits vs. d'animaux.
```{r echo=FALSE,results='asis'}
library(hwriter)
set.seed(9850104)
my.df <- data.frame(Var1=sample(x=c("Pomme","Orange","Banane"),size=40,replace=TRUE),
Var2=sample(x=c("Chien","Chat","Lapin"),size=40,replace=TRUE))
tbl1 <- table(my.df$Var1,my.df$Var2)
tbl1 <- cbind(tbl1,rowSums(tbl1))
tbl1 <- rbind(tbl1,colSums(tbl1))
colnames(tbl1)[4] <- "TOTAL"
rownames(tbl1)[4] <- "TOTAL"
# Parce que j'ai utilisé results='asis' pour ce chunk, je peux simplement utiliser cat() et hwrite()
# pour écrire le tableau en HTML. En utilisant la fonction row.* de hwrite(), je peux assigner des classes
# aux différents éléments du tableau.
cat(hwrite(tbl1,
border=NA,
table.class="t1",
row.class=list(c("header col_first","header col","header col","header col", "header col_last"),
c("col_first","col","col","col","col_last"),
c("col_first","col","col","col","col_last"),
c("col_first","col","col","col","col_last"),
c("footer col_first","footer col","footer col","footer col","footer col_last"))))
```
Enfin, créez simplement un fichier CSS personnalisé.
FICHIER : custom.css
body {
font-family: sans-serif;
background-color: white;
font-size: 12px;
margin: 20px;
}
h1 {font-size:1.5em;}
table {
border: solid;
border-color: black;
border-width: 2px;
border-collapse: collapse;
margin-bottom: 20px;
text-align: center;
padding: 0px;
}
.t1 .header {
color: white;
background-color: black;
border-bottom: solid;
border-color: black;
border-width: 2px;
font-weight: bold;
}
.t1 .footer {
border-top: solid;
border-color: black;
border-width: 2px;
}
.t1 .col_first {
border-right: solid;
border-color: black;
border-width: 2px;
text-align: left;
font-weight: bold;
width: 75px;
}
.t1 .col {
width: 50px;
}
.t1 .col_last {
width: 50px;
border-left: solid;
border-color: black;
border-width: 2px;
}
Exécuter ./file_knit.r
me donne file.html, qui ressemble à ceci :
![Exemple de sortie]()
Donc, j'espère que cela pourra être utile à d'autres qui veulent un peu plus de mise en forme dans la sortie Markdown !
3 votes
En considérant xtable et html.. Impression du code html avec
print(xtable(data), type = "html")
.7 votes
@TARehman Ta question m'a rappelé qu'il n'y avait toujours pas de solution qui produisait des tables directement compatibles avec
knitr
, donc j'ai envoyé une requête de fusion àpander
pour ajouter le style de table. Dans les prochaines versions depander
, vous devriez pouvoir fairepandoc.table(iris, style="rmarkdown")
1 votes
@Marius Savez-vous pourquoi pandoc ne fait pas partie de CRAN ? Ou quand il pourrait en devenir partie ? Juste curieux.
2 votes
@TARehman Je ne suis pas tout à fait sûr si vous vouliez dire pander ou pandoc.
pander
devrait être sur CRAN. pandoc est un programme écrit en Haskell qui convertit vers et depuis une grande variété de formats différents, ce n'est pas spécifique à R de quelque manière que ce soit.0 votes
@TARehman si vous êtes sur Windows, vous pourriez installer
pandoc
facilement avec github.com/talgalili/installr. Mais @Marius a raison,pandoc
n'est pas un programme R, donc ne sera jamais sur CRAN bien sûr.1 votes
Désolé, je voulais dire
pander
, qui n'était pas sur CRAN la dernière fois que j'avais entendu - paspandoc
. C'est ma faute. :)0 votes
Voici un fichier html qui montre ce que produisent une demi-douzaine de méthodes différentes : rpubs.com/benmarwick/tables_in_rmarkdown le meilleur paquet pour cela est probablement hwriter