105 votes

Créer des tableaux Markdown de manière programmée en R avec KnitR

Je viens tout juste de commencer à apprendre à propos de KnitR et de l'utilisation de Markdown pour générer des documents et des rapports en R. Cela semble parfait pour beaucoup des rapports quotidiens que je dois faire dans mon travail. Cependant, une chose que je ne semble pas voir est un moyen simple d'imprimer des data frames et des tables en utilisant le format Markdown (un peu comme xtable, mais avec Markdown au lieu de LaTeX ou HTML). Je sais que je peux simplement incorporer la sortie HTML de xtable, mais je me demandais s'il existait des solutions basées sur 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 de pander, vous devriez pouvoir faire pandoc.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.

3voto

Pankil Shah Points 850

Utilisez une combinaison de knitr::kable et xtable dans votre document markdown.

library("knitr","xtable")

pour un simple data.frame -

kable(head(mtcars[,1:4]),format="markdown")
kable(head(mtcars[,1:4]),format="pandoc",caption="Title of the table")

format="pandoc" permet plus d'options comme le caption.

Maintenant la combinaison pour le résumé du modèle.

data(tli)
fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data=tli)
kable(xtable(fm1), caption = "Tableau d'Anova")

pour encore plus d'options, regardez le package stargazer au lieu de xtable.

exemple pour un usage personnel

1voto

bud.dugong Points 184

Pour écrire / créer des tables Markdown en R, vous pouvez également utiliser les fonctions MarkDown_Table_writer_DF_RowColNames() ou MarkDown_Table_writer_NamedVector() de MarkdownReports. Il vous suffit de transmettre un data frame / matrice avec des noms de dimension, ou un vecteur avec des noms, et il parse & écrit le tableau au format Markdown.

0voto

Valentas Points 31

Ma fonction pour Gitlab :

to_markdown <- fonction(df) {
    wrap <- fonction(x, sep = " ") paste0("|", sep, paste(x, collapse = paste0(sep, "|", sep)), sep, "|", sep = sep)
    paste0(wrap(colnames(df)),
    "\n",
    wrap(rep("------", ncol(df)), sep = ""),
    "\n",
    paste(apply(df, 1, wrap), collapse = "\n"))
}

cat(to_markdown(head(iris[, 1:3])))

| Longueur du sépale | Largeur du sépale | Longueur du pétale | 
|------|------|------|
| 5.1 | 3.5 | 1.4 | 
| 4.9 | 3 | 1.4 | 
| 4.7 | 3.2 | 1.3 | 
| 4.6 | 3.1 | 1.5 | 
| 5 | 3.6 | 1.4 | 
| 5.4 | 3.9 | 1.7 |

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X