適切にフォーマットされたデータフレームを、理想的にはスクリプト内から紙に印刷したいと思います。 (私は機器を使用してデータを収集し、Rスクリプトを使用して自動的に処理および印刷しようとしています)。
現在、write.table()
を使用してデータフレームをテキストファイルに書き込むことができますが、これには2つの問題があります。
特定のコードよりも一般的な戦略を探しています(ただし、コードも素晴らしいでしょう!)。 Sweaveは最も便利なソリューションでしょうか?原則としてsocketConnection()
を使用してプリンターに印刷できますか?もしそうなら、どこで使用方法を学ぶことができますか(ドキュメントが非常に役立つとは思いませんでした)。
GridExtraパッケージの_grid.table
_を使用すると、すばやく簡単に可能です。
_library(gridExtra)
pdf("data_output.pdf", height=11, width=8.5)
grid.table(mtcars)
dev.off()
_
データがページに収まらない場合は、テキストサイズgrid.table(mtcars, gp=gpar(fontsize=8))
を小さくできます。これは非常に柔軟性がなく、一般化や自動化が容易ではありません。
驚いた人は、データのニース印刷用の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>
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をご覧ください。
RStudio IDE は、data.tableを印刷するための別の素敵なオプションを提供します。
View(data_table)
またはGUI経由これはRStudio V0.98.1103(およびおそらく新しいバージョン)で動作します
それほど派手ではありませんが、非常に実用的です:
print.data.frame(iris)
long/wideテーブルには pander を使用できます。
長いテーブルは、ページに合う短い部分に自動的に分割されます。 knitr を使用して、このチャンクをRmdファイルに挿入します。
pander::pander(mtcars)
Excelテーブルのようなものが必要な場合(htmlの編集オプションがあっても) rhandsontable を使用します。 vignette の使用法とフォーマットに関する詳細情報。 Rmdをhtmlファイルに編む必要があります。
library(rhandsontable)
rhandsontable(mtcars, rowHeaders = NULL)
同様のことをしようとしたときに、この質問に出会いました。このコンテキストで役立つstackoverflowのシンクコマンド elsewhere の言及を見つけました。
sink('myfile.txt')
print(mytable,right=F)
sink()
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()