web-dev-qa-db-ja.com

適切にフォーマットされたデータフレームを(紙に)印刷する方法

適切にフォーマットされたデータフレームを、理想的にはスクリプト内から紙に印刷したいと思います。 (私は機器を使用してデータを収集し、Rスクリプトを使用して自動的に処理および印刷しようとしています)。

現在、write.table()を使用してデータフレームをテキストファイルに書き込むことができますが、これには2つの問題があります。

  1. 結果のテキストファイルの形式が不適切です(列と見出しが必ずしも一致しない)
  2. R内からテキストファイルを印刷する方法がわかりません。

特定のコードよりも一般的な戦略を探しています(ただし、コードも素晴らしいでしょう!)。 Sweaveは最も便利なソリューションでしょうか?原則としてsocketConnection()を使用してプリンターに印刷できますか?もしそうなら、どこで使用方法を学ぶことができますか(ドキュメントが非常に役立つとは思いませんでした)。

76
Drew Steen

GridExtraパッケージの_grid.table_を使用すると、すばやく簡単に可能です。

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

enter image description here

データがページに収まらない場合は、テキストサイズgrid.table(mtcars, gp=gpar(fontsize=8))を小さくできます。これは非常に柔軟性がなく、一般化や自動化が容易ではありません。

98
bdemarest

LaTeXドキュメントと組み合わせてxtableをお勧めします。こちらの例をご覧ください pdf:

これをSweaveまたは knitr と直接組み合わせることもできます。

16
smu

printr パッケージは、data.frames、ヘルプページ、ビネットリスト、および knitr ドキュメント内のデータセットリスト。

ドキュメントページ から:

options(digits = 4)
set.seed(123)
x = matrix(rnorm(40), 5)
dimnames(x) = list(NULL, head(LETTERS, ncol(x)))
knitr::kable(x, digits = 2, caption = "A table produced by printr.")
7
jsta

驚いた人は、データのニース印刷用のstargazerパッケージについて言及していません。

見栄えの良いテキストファイルを出力できます。

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   
--------------------------------------------

あるいは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>
7
BLT

Grid.tableソリューションは確かにPDFを作成する最も早い方法ですが、かなり長いテーブルがある場合、これは最適なソリューションではないかもしれません。 RStudio + knitr + longtableを使用すると、適切にフォーマットされたPDFを簡単に作成できます。必要なものは次のようなものです:

\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}

詳しくは this postをご覧ください。

6
Thusi

RStudio IDE は、data.tableを印刷するための別の素敵なオプションを提供します。

  1. ビューアーでデータを開きます。 View(data_table)またはGUI経由
  2. 別のウィンドウでビューを開きます(左上隅のアイコン:「新しいウィンドウで表示」)
  3. 別のウィンドウが印刷ダイアログをサポートするようになりました(プレビューを含む)

これはRStudio V0.98.1103(およびおそらく新しいバージョン)で動作します

4
kirk

それほど派手ではありませんが、非常に実用的です:

print.data.frame(iris)
4
jclouse

long/wideテーブルには pander を使用できます。

長いテーブルは、ページに合う短い部分に自動的に分割されます。 knitr を使用して、このチャンクをRmdファイルに挿入します。

pander::pander(mtcars)

enter image description here

Excelテーブルのようなものが必要な場合(htmlの編集オプションがあっても) rhandsontable を使用します。 vignette の使用法とフォーマットに関する詳細情報。 Rmdをhtmlファイルに編む必要があります。

library(rhandsontable)
rhandsontable(mtcars, rowHeaders = NULL)

enter image description here

3
epo3

同様のことをしようとしたときに、この質問に出会いました。このコンテキストで役立つstackoverflowのシンクコマンド elsewhere の言及を見つけました。

sink('myfile.txt')
print(mytable,right=F)
sink()
1
JamesF

PNGとしてエクスポートする場合は、次のようにできます。

library(gridExtra)
png("test.png", height = 50*nrow(df), width = 200*ncol(df))
grid.table(df)
dev.off()

PDFとしてエクスポートする場合は、次のようにできます。

library(gridExtra)
pdf("test.pdf", height=11, width=10)
grid.table(df)
dev.off()
0
Ning