prosource

좋은 형식의 데이터 프레임을 인쇄(종이에 인쇄)하는 방법

probook 2023. 11. 4. 10:51
반응형

좋은 형식의 데이터 프레임을 인쇄(종이에 인쇄)하는 방법

좋은 포맷의 데이터 프레임을 종이에 인쇄하고 싶습니다. 스크립트 내에서 이상적으로 말이죠.(저는 기기를 이용하여 데이터를 수집하고 R 스크립트를 이용하여 자동으로 처리하고 인쇄하려고 합니다.)

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

  1. 결과 텍스트 파일의 형식이 불량합니다(열이 반드시 제목과 일치하는 것은 아님).
  2. 나는 R 안에서 텍스트 파일을 인쇄하는 방법을 모릅니다.

특정 코드보다는 일반적인 전략을 찾고 있습니다(코드도 좋지만!).Swave가 가장 편리한 해결책이 될까요?원칙적으로 사용할 수 있습니다.socketConnection()프린터에 인쇄하는 방법 - 사용 방법에 대해 어디서 알 수 있습니까? (설명서에 큰 도움이 되지 않습니다.)

여기에 빠르고 쉽게 사용할 수 있는 가능성이 있습니다.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)). 이는 매우 유연하지 않을 수도 있고, 일반화하거나 자동화하기도 쉽지 않을 수도 있습니다.

나는 제안하고 싶습니다.xtableLaTeX 문서와 결합하여.pdf의 예를 살펴봅니다.

당신은 이것을 직접 결합할 수도 있습니다.Sweave또는.

아무도 언급하지 않아 놀랍습니다.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>

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

설명서 페이지에서:

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를 생성하는 가장 빠른 방법이지만 테이블이 상당히 긴 경우에는 최적의 솔루션이 아닐 수도 있습니다.R Studio + Nitr + 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}

자세한 내용은 이 게시물을 참조하시기 바랍니다.

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

print.data.frame(iris)

긴 테이블/넓은 테이블의 경우 팬더를 사용할 수 있습니다.

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

pander::pander(mtcars)

enter image description here

(html에 편집 옵션이 있는 경우에도) 엑셀 표와 더 비슷한 것을 원한다면 ranhandsson table을 사용합니다.비네트의 사용법 및 포맷에 대한 자세한 정보.Rmd를 html 파일로 만들어야 합니다.

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

enter image description here

RStudio IDE는 데이터를 출력할 수 있는 또 다른 좋은 옵션을 제공합니다.표:

  1. 뷰어에서 데이터를 엽니다.View(data_table)또는 GUI를 통해
  2. 별도의 창에서 보기 열기(왼쪽 상단의 아이콘: "새 창에 표시")
  3. 이제 별도의 창에서 인쇄 대화상자(미리보기 포함)를 지원합니다.

이는 RStudio V0.98.1103(그리고 아마도 최신 버전)에서 작동합니다.

저는 비슷한 일을 하려고 할 때 이 질문을 하게 되었습니다.스택 오버플로의 다른 에서 sink 명령에 대한 언급이 이러한 맥락에서 유용했습니다.

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

언급URL : https://stackoverflow.com/questions/10587621/how-to-print-to-paper-a-nicely-formatted-data-frame

반응형