J'ai une structure de données simple: les cas sont des pays et pour chaque pays, j'ai quelques variables numériques. Comme:
dat <- data.frame(country = c("Belgium", "Germany", "Holland", "Ireland"), Var1 = 1:4, Var2 = 11:14) print(dat, row.names = FALSE) country Var1 Var2 Belgium 1 11 Germany 2 12 Holland 3 13 Ireland 4 14
3 Réponses :
avec Cette fourchette expérimentale de gtable , vous pouvez faire,
require(gtable) dat <- data.frame(country = c("Belgium", "Germany", "Holland", "Ireland"), Var1 = 1:4, Var2 = 11:14) g <- gtable_table(dat) library(png) # pirate-land flag for illustration img <- readPNG(system.file("img", "Rlogo.png", package="png"), native = FALSE) imgRgb <- rgb(img[,,1],img[,,2],img[,,3]) dim(imgRgb) <- dim(img)[1:2] flags <- replicate(nrow(g), rasterGrob(imgRgb), simplify = FALSE) g <- gtable_add_cols(g, unit(1,"cm"), 0) g <- gtable_add_grob(g, flags, t = seq_len(nrow(g)), l=1, r=1, z=1) grid.newpage() grid.draw(g)
Bonjour Baptiste, c'est une option intrigante. Il est certainement facile d'ajouter un formatage à la table comme celui-ci (comme alternativement l'ajout d'un fond lightgrey aux rangées). Je vais devoir étudier cela plus loin, merci.
Si vous utilisez Knitr fort> avec le Si vous avez besoin de sortie de latex / PDF, vous devez télécharger ces images par vous-même. Voici un exemple: p> ! [] () code> pour inclure des images, par exemple
p>
C'est vraiment sympathique. En effet, je viens de commencer à travailler avec Knitr pour pouvoir créer le rapport que cette table fera partie. Je n'avais pas encore compris cette solution et j'étais sur le point de commencer à écrire du code dans H HTML pour que cela se produise. Mais votre solution est assez simple. Serait-il un avantage pour aller à la route HTML R pour cela?
@PeterverBeet HTML est beaucoup plus amusant que le mot ou le latex. Si vous jetez un coup d'œil au lien RMARKMODDOW, j'ai inclus dans la réponse, vous réaliserez que la sortie du marquage R n'est pas nécessairement HTML.
Existe-t-il un moyen de faire la même chose, tout en utilisant du latex au lieu de Remmound? J'ai essayé avec "\ inclugraphics" dans le drapeau $ $, mais cela tombe sur la manière dont j'essaie.
@Peterverbeet Il peut y avoir quelques problèmes: 1. Vous avez besoin de \\ inclugraphics code> (deux backslashes); 2. Les drapeaux doivent exister localement (les liens HTTP ne fonctionneront pas en latex).
Merci, cela fonctionne, j'apprécie vraiment votre guidage. Puis-je passer des options de mise en page supplémentaires à Kable? Je voudrais faire du texte dans la rangée supérieure audacolaire et aimerais remplir les rangées en alternance avec le blanc et le gris. Est-ce possible?
@Peterverbeet Je crois que vous pouvez trouver un paquet de latex pour le faire, au lieu de le faire dans R.
@PeterverBeet Pourriez-vous fournir le code pour insérer des images dans les tableaux PFD, à l'aide d'incluse_graphics ()?
Il pourrait être intéressant de regarder le package pixiedust code> pour des graphiques de fond pour les tables de R.
@Yihuixie: Lorsque j'utilise votre code pour compiler un PDF au lieu de HTML, je reçois l'erreur suivante: ! Erreur pdftex.def: fichier "http://flagpedia.net/data/flags/mini/ca.png" non trouvé: Utilisation du réglage brouillon. Code>. Existe-t-il un moyen de contourner cela pour générer une version PDF? Merci d'avance!
Voir aussi ma question associée ici: Stackoverflow.com/questions/58204272/...
@Mavericks J'ai mis à jour ma réponse pour la sortie PDF. Vous devez télécharger les images.
@Yihuixie, merci pour votre réponse rapide et la Reprex, qui fonctionne bien dans un simple fichier de marquage. Cependant, dans un PDF compilé avec une réserve, il affiche simplement ! [] (Ca.png) code> au lieu du drapeau de la table. Auriez-vous des recommandations sur la façon de le faire fonctionner là aussi?
@Mavericks utilise kable (..., format = 'pandoc') code> si vous utilisez une réserve.
Merci @yihuixie, ça fonctionne bien! Auriez-vous également des recommandations sur la manière d'améliorer la table de marquage ou de l'approche de la table KABLE / KABLEEXTRA à ma question à ma question ici Stackoverflow.com/cevestions / 58204272 / ... ? Merci d'avance!
La question a été posée avec pdf comme sortie, voici une réponse à l'aide de Knitr, et quelque chose de plus approprié que simplement \ includegraphics
le Truc est d'utiliser le package de réglage en latex, avec les arguments suivants: p>
(code> (ultérieurement utilisé comme argument sur la fonction R get_picture_code code>) est la hauteur de l'image. LI>
- L'argument
Valign code> (quel défaut ici à Valign = M), effectuera un réglage vertical en fonction du texte, LI>
- le
margin code> est défini ici comme 1ex code> entourant l'image permet de séparer les drapeaux. Li>
ul> Nous n'utilisons donc que cette fonction p> xxx pré> pour obtenir un vecteur d'images ajoutées à la table. p>
enfin Nous utilisons Xtable avec argument sanitize.text.function = identité code> pour imprimer le code Tex: p> xxx pré> le Réglal La documentation contient de nombreuses autres options, y compris les couleurs d'arrière-plan, la garniture, l'alignement horizonaire qui vous permettra faire un ajustement très fin de la position des images ...
Il existe également un bel exemple d'utilisation de ce paquet dans Tex -Latex stackexchange p> p>
La réponse à cela dépendra du format éventuel du document résultant (HTML, PDF, Word, etc.).
Le format final sera pdf.