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


80

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

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

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

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


MS Word를 말하는 건가요 아니면 LaTeX 논문인가요?
Tyler Rinker

컴퓨터에 LaTeX가 설치되어 있습니까? xtable, sweave (또는 knitr), 그리고 아마도 이것의 조합을 생각하고 있습니다 : livedocs.adobe.com/acrobat_sdk/10/Acrobat10_HTMLHelp/wwhelp/… 가 도움 이 수 있습니다. 그러나 그것은 약간 복잡해 보입니다. 나는 다른 사람들이 이것에 대해 어떻게 생각하는지 보는 데 관심이 있습니다.
Dason

실제로 데이터 프레임을 더 큰 문서에 배치하고 싶지 않습니다. 읽기 쉬운 데이터 프레임이있는 인쇄 된 종이를 갖고 싶을뿐입니다. 그런 다음이를 랩 노트북에 하드 카피 기록으로 넣습니다. 악기 출력.
Drew Steen

컴퓨터에 LaTeX가 설치되어 있지는 않지만 쉽게 할 수 있습니다.
Drew Steen

1
% System(lpr [filename]), 적어도 * nix 세계에서는 R 내에서 프린터를
켤 수

답변:


107

다음은 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)). 이것은 매우 유연하지 않을 수도 있고 일반화하거나 자동화하기 쉽지 않을 수도 있습니다.


@bdemarest,이 그래프에 pdf로 제목을 어떻게 넣습니까?
user1471980

@ user1471980,이를 수행하는 한 가지 방법은 grid.arrange(tableGrob(mtcars, gp=gpar(fontsize=6)), main="Main Title Here.").
bdemarest

한 페이지에 맞지 않는 매우 많은 수의 행이있는 데이터 프레임을 인쇄하는 방법이 있습니까?
나나미 2013 년

10
@Nanami,이 같은 시도 뭔가 :library(gridExtra); maxrow = 30; npages = ceiling(nrow(iris)/maxrow); pdf("iris_pages.pdf", height=11, width=8.5); for (i in 1:npages) {idx = seq(1+((i-1)*maxrow), i*maxrow); grid.newpage(); grid.table(iris[idx, ])}; dev.off()
bdemarest

1
@Masi 는 표준 R 설치 패키지에 mtcars포함되어 있습니다 datasets. 새 R 세션을 시작할 때 기본적으로로드됩니다. 입력을 시도 ?mtcars하고 mtcars프롬프트 R에 무슨 뜻인지 볼 수 있습니다.
bdemarest

16

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

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


5
제발, 링크 만 대답하지 마십시오. 재현 가능한 데이터와 예제 출력이있는 최소한의 코드 예제가 있으면 좋을 것입니다.
Léo Léopold Hertz 준영

나는 비판이 질문자에게 향해야한다고 생각한다. 그는 최소한의 재현 가능한 예를 제시하지 않았습니다 . 링크 전용 답변을 수락하지 않는 일반적인 이유는 여기에 적용되지 않는 것 같습니다. 이 질문은 7 년 전이고 CRAN 사이트 비 네트에 대한 링크는 상당히 안정적으로 보입니다.
IRTFM

9

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

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

1
knitr 제작 pdf로 데이터 프레임을 인쇄하려는 경우 이것이 모든 답변 중에서 가장 좋은 옵션이라는 것을 알았습니다.
snd

6

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}

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


이 대답은 최소한의 데이터 및 출력 예제로 훨씬 더 좋을 것입니다. 자, 나는 그것을 스텁 대답으로 느낍니다.
Léo Léopold Hertz 준영

5

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

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

pander::pander(mtcars)

여기에 이미지 설명 입력

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

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

여기에 이미지 설명 입력


4

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

print.data.frame(iris)

1
화면에 표시되지만 종이에 표시하는 방법은 표시되지 않습니다.
Brian Diggs 2013 년

4

RStudio IDE는 밖으로 data.table를 인쇄하는 또 다른 좋은 옵션을 제공합니다 :

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

이것은 RStudio V0.98.1103 (및 아마도 최신 버전)에서 작동합니다.


별도의 창에 대한 인쇄 대화 상자가 RStudio V0.99에서 사라진 것 같습니다.
kirk nov.

1
뷰를 마우스 오른쪽 버튼으로 클릭하고 "Open Frame"(v0.99.887)을 선택하여 가져올 수 있습니다.
mpe 16.04.14

2

비슷한 일을하려고 할 때이 질문을 보았습니다. 이 컨텍스트에서 유용한 stackoverflow의 다른 곳 에서 싱크 명령에 대한 언급을 찾았습니다 .

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

0

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()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.