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

后端 未结 10 2035
深忆病人
深忆病人 2020-12-07 08:41

I\'d like to print nicely-formatted data frames to paper, ideally from within a script. (I am trying to collect data using an instrument and automatically process and print

相关标签:
10条回答
  • 2020-12-07 09:02

    I came across this question when looking to do something similar. I found mention of the sink command elsewhere on stackoverflow that was useful in this context:

    sink('myfile.txt')
    print(mytable,right=F)
    sink()
    
    0 讨论(0)
  • 2020-12-07 09:03

    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.

    0 讨论(0)
  • 2020-12-07 09:06

    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.000
    hp        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>

    0 讨论(0)
  • 2020-12-07 09:13

    The grid.table solution will indeed be the quickest way to create PDF, but this may not be the optimal solution if you have a fairly long table. RStudio + knitr + longtable make it quite easy to create nicely formatted PDFs. What you'll need is something like:

    \documentclass{article}
    \usepackage{longtable}
    \begin{document}
    
    <<results='asis'>>=
    library(xtable)
    
    df = data.frame(matrix(rnorm(400), nrow=100))
    xt = xtable(df)
    print(xt, 
          tabular.environment = "longtable",
          floating = FALSE
          )
    @
    \end{document}
    

    Pls see this post for more details.

    0 讨论(0)
提交回复
热议问题