How to print (to paper) a nicely-formatted data frame How to print (to paper) a nicely-formatted data frame r r

How to print (to paper) a nicely-formatted data frame


Here is a quick and easy possibility using grid.table from the gridExtra package:

library(gridExtra)pdf("data_output.pdf", height=11, width=8.5)grid.table(mtcars)dev.off()

enter image description here

If your data doesn't fit on the page, you can reduce the text size grid.table(mtcars, gp=gpar(fontsize=8)). This may not be very flexible, nor easy to generalize or automate.


I would suggest xtable in combination with LaTeX documents. Have a look at the examples in this pdf:

You could also directly combine this with Sweave or knitr.


Surprised nobody has mentioned the stargazer package for nice printing of data.

You can output a nice-looking text file:

stargazer(mtcars, type = 'text', out = 'out.txt')============================================Statistic N   Mean   St. Dev.  Min     Max  --------------------------------------------mpg       32 20.091   6.027   10.400 33.900 cyl       32  6.188   1.786     4       8   disp      32 230.722 123.939  71.100 472.000hp        32 146.688  68.563    52     335  drat      32  3.597   0.535   2.760   4.930 wt        32  3.217   0.978   1.513   5.424 qsec      32 17.849   1.787   14.500 22.900 vs        32  0.438   0.504     0       1   am        32  0.406   0.499     0       1   gear      32  3.688   0.738     3       5   carb      32  2.812   1.615     1       8   --------------------------------------------

Or even HTML:

stargazer(mtcars, type = 'html', out = 'out.html')

<table style="text-align:center"><tr><td colspan="6" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Statistic</td><td>N</td><td>Mean</td><td>St. Dev.</td><td>Min</td><td>Max</td></tr><tr><td colspan="6" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">mpg</td><td>32</td><td>20.091</td><td>6.027</td><td>10.400</td><td>33.900</td></tr><tr><td style="text-align:left">cyl</td><td>32</td><td>6.188</td><td>1.786</td><td>4</td><td>8</td></tr><tr><td style="text-align:left">disp</td><td>32</td><td>230.722</td><td>123.939</td><td>71.100</td><td>472.000</td></tr><tr><td style="text-align:left">hp</td><td>32</td><td>146.688</td><td>68.563</td><td>52</td><td>335</td></tr><tr><td style="text-align:left">drat</td><td>32</td><td>3.597</td><td>0.535</td><td>2.760</td><td>4.930</td></tr><tr><td style="text-align:left">wt</td><td>32</td><td>3.217</td><td>0.978</td><td>1.513</td><td>5.424</td></tr><tr><td style="text-align:left">qsec</td><td>32</td><td>17.849</td><td>1.787</td><td>14.500</td><td>22.900</td></tr><tr><td style="text-align:left">vs</td><td>32</td><td>0.438</td><td>0.504</td><td>0</td><td>1</td></tr><tr><td style="text-align:left">am</td><td>32</td><td>0.406</td><td>0.499</td><td>0</td><td>1</td></tr><tr><td style="text-align:left">gear</td><td>32</td><td>3.688</td><td>0.738</td><td>3</td><td>5</td></tr><tr><td style="text-align:left">carb</td><td>32</td><td>2.812</td><td>1.615</td><td>1</td><td>8</td></tr><tr><td colspan="6" style="border-bottom: 1px solid black"></td></tr></table>