[r] 멋진 형식의 데이터 프레임을 (종이에) 인쇄하는 방법

이상적으로는 스크립트 내에서 멋진 형식의 데이터 프레임을 종이에 인쇄하고 싶습니다. (악기를 사용하여 데이터를 수집하고 R 스크립트를 사용하여 자동으로 처리하고 인쇄하려고합니다.)

지금은를 사용하여 텍스트 파일에 데이터 프레임을 쓸 수 write.table()있지만 여기에는 두 가지 문제가 있습니다.

  1. 결과 텍스트 파일의 형식이 잘못되었습니다 (열이 반드시 제목과 일치 할 필요는 없음).
  2. R 내에서 텍스트 파일을 인쇄하는 방법을 모르겠습니다.

특정 코드보다 일반적인 전략을 더 많이 찾고 있습니다 (코드도 좋겠지 만!). Sweave가 가장 편리한 솔루션일까요? 원칙적 socketConnection()으로 프린터로 인쇄하는 데 사용할 수 있으며, 그렇다면 사용 방법에 대해 어디서 배울 수 있습니까 (문서가 그다지 도움이되지 않음).



답변

다음은 grid.tablegridExtra 패키지에서 사용하는 빠르고 쉬운 가능성입니다 .

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

여기에 이미지 설명 입력

데이터가 페이지에 맞지 않는 경우 텍스트 크기를 줄일 수 있습니다 grid.table(mtcars, gp=gpar(fontsize=8)). 이것은 매우 유연하지 않을 수도 있고 일반화하거나 자동화하기 쉽지 않을 수도 있습니다.


답변

xtableLaTeX 문서와 함께 제안 합니다. 이 pdf 의 예를 살펴보십시오 .

또한 직접 이것을 결합 할 수있는 Sweaveknitr.


답변

놀랍게도 아무도 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>


답변

printr패키지는 knitr 문서 data.frames에서, 도움말 페이지, 비 네트 목록 및 데이터 세트 목록 을 인쇄하기위한 좋은 옵션입니다 .

로부터 문서 페이지 :

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.")


답변

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}

자세한 내용 은 게시물을 참조하십시오.


답변

들어 긴 / 넓은 테이블 당신은 사용할 수 판더을 .

긴 테이블을 페이지에 맞는 짧은 부분으로 자동 분할합니다. 예를 들어 knitr을 사용 하여이 청크를 Rmd 파일에 삽입합니다.

pander::pander(mtcars)

여기에 이미지 설명 입력

Excel 표 와 비슷하게 보이는 것을 원한다면 (HTML의 편집 옵션도 포함) rhandsontable 을 사용 하십시오 . 비 네트의 사용 및 형식에 대한 자세한 정보 . Rmd를 html 파일로 묶어야합니다.

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

여기에 이미지 설명 입력


답변

화려하지는 않지만 매우 실용적입니다.

print.data.frame(iris)