2016-02-23 2 views
0

Je voudrais être capable de rendre un xtable dans un morceau de code à exécution automatique, c'est-à-dire PAS via copier-coller, tout en contrôlant le nombre de chiffres significatifs. La seule façon que je connaisse pour rendre un xtable sur un périphérique de tracé standard consiste à utiliser grid.table, mais cette méthode ignore la directive digits et trace tous les chiffres disponibles. Voici un exemple de code. Aucun conseil?Rendu de xtable avec des chiffres significatifs

library(xtable) 
library(gridExtra) 

x = rnorm(100) 
y = x + rnorm(100) 
m = lm(y ~ x) 

print(xtable(m)) #too many decimal places 
print(xtable(m, digits = 2)) #this works 
grid.table(xtable(m, digits=2)) #this doesn't!!! 

Aucun des petits conseils ici semblent utiles pour le rendu automatisé: R: rendering xtable

+0

Avez-vous besoin de le rendre sur un dispositif de complot? – Thomas

+0

oui, je le fais. Je pourrais probablement trouver des solutions pour rendre le pdf, mais ce n'est pas suffisant. Je dois être capable de rendre à l'un ou l'autre. – rimorob

+0

'xtable' produit un data.frame avec d'autres attributs qui sont utilisés pour le formatage lors de l'impression au format latex ou html. 'grid.table' les ignore complètement et ne traite que le data.frame nu, donc tout formatage de numéro doit être fait sur les données elles-mêmes, par ex. avec 'sprintf' ou' formatC' – baptiste

Répondre

2

Si vous convertissez tout à cordes, vous devriez être en mesure de faire ce travail:

x <- xtable(m) 
x[] <- lapply(x, sprintf, fmt = "%0.2f") 
grid.table(x) 

enter image description here

+0

Cela semble fonctionner, merci !!!! – rimorob

2

Je ne suis pas sûr de votre appareil de tracé final, mais à certaines fins, vous pouvez simplement sauter xtable tous ensemble:

library("broom") 
library("gridExtra") 
x = rnorm(100) 
y = x + rnorm(100) 
m = lm(y ~ x) 
DF <- broom::tidy(m) 
DF[,2:4] <- round(DF[,2:4], 2) 
DF[,5] <- format(DF[,5], scientific = TRUE, digits = 4) 
grid.table(DF) 

Assurez-vous d'avoir la dernière . Vous pouvez également contrôler l'apparence de la table dans les moindres détails, via des thèmes (il y a une vignette sur le sujet).

+0

J'utilise déjà un thème. Je vais essayer votre chemin aussi. Merci! – rimorob