कैसे (कागज के लिए) एक अच्छी तरह से स्वरूपित डेटा फ्रेम मुद्रित करने के लिए


80

मैं अच्छी तरह से स्वरूपित डेटा फ़्रेम को पेपर में प्रिंट करना चाहता हूं, आदर्श रूप से एक स्क्रिप्ट के भीतर से। (मैं एक उपकरण का उपयोग करके डेटा एकत्र करने का प्रयास कर रहा हूं और स्वचालित रूप से एक आर स्क्रिप्ट का उपयोग करके इसे प्रिंट कर सकता हूं)।

अभी मैं एक पाठ फ़ाइल का उपयोग करके डेटा फ़्रेम लिख सकता हूं write.table(), लेकिन इसकी दो समस्याएं हैं:

  1. परिणामी पाठ फ़ाइल खराब स्वरूपित है (कॉलम आवश्यक रूप से उनके शीर्षकों के साथ पंक्तिबद्ध नहीं है) और
  2. मुझे नहीं पता कि आर के भीतर से टेक्स्ट फाइल कैसे प्रिंट की जाए।

मैं विशिष्ट कोड की तुलना में सामान्य रणनीतियों के लिए अधिक देख रहा हूं (हालांकि कोड बहुत अच्छा होगा!)। क्या स्वाइप सबसे सुविधाजनक उपाय होगा? सिद्धांत रूप में मैं socketConnection()एक प्रिंटर पर प्रिंट करने के लिए उपयोग कर सकता हूं - और यदि हां, तो मैं इसे कैसे उपयोग करना सीख सकता हूं (मुझे बहुत उपयोगी होने के लिए दस्तावेज नहीं मिला)।


क्या हम MS Word की बात कर रहे हैं या मैं इसे LaTeX पेपर मान रहा हूं?
टायलर रिंकर

क्या आपके पास LaTeX आपके कंप्यूटर पर स्थापित है? मैं xtable, sweave (या knitr) का संयोजन सोच रहा हूं, और संभवतः यह: liveocs.adobe.com/acrobat_sdk/10/Acrobat10_HTMLHelp/wwhelp/… मदद कर सकता है। लेकिन यह थोड़ा जटिल लगता है। मैं यह देखने में दिलचस्पी रखता हूं कि अन्य लोग इसके लिए क्या करते हैं।
डेसन

मैं वास्तव में डेटा फ़्रेम को एक बड़े दस्तावेज़ में नहीं रखना चाहता - मैं केवल एक सुपाठ्य डेटा फ्रेम के साथ एक पेपर आउट प्रिंट करना चाहता हूं, जिसे मैं अपनी प्रयोगशाला नोटबुक में हार्ड-कॉपी रिकॉर्ड के रूप में डालूंगा। साधन उत्पादन।
ड्रू स्टीन

मेरे पास मशीन पर लाटेक्स स्थापित नहीं है, लेकिन मैं इसे आसानी से पर्याप्त कर सकता हूं जो मुझे लगता है।
ड्रू स्टीन

1
% System(lpr [filename])कम से कम * निक्स दुनिया में, आप आर के भीतर से प्रिंटर को आग लगा सकते हैं
कार्ल विटथॉफ्ट

जवाबों:


107

यहां 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))। यह बहुत लचीला नहीं हो सकता है, और न ही सामान्यीकरण या स्वचालित करने में आसान है।


@bdemarest, आप इस आलेख का शीर्षक pdf में कैसे डालेंगे?
user1471980

@ user1471980, ऐसा करने का एक तरीका है grid.arrange(tableGrob(mtcars, gp=gpar(fontsize=6)), main="Main Title Here.")
bdemarest

क्या डेटा फ़्रेम को प्रिंट करने का एक तरीका बहुत बड़ी संख्या में पंक्तियाँ हैं जो केवल एक पृष्ठ में फिट नहीं होती हैं?
नानामी

10
@ नानामी, कुछ इस तरह आज़माएँ: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
@ मासी, एक मानक आर स्थापना में पैकेज में mtcarsशामिल है datasets। जब आप नया R सत्र शुरू करते हैं तो यह डिफ़ॉल्ट रूप से लोड होता है। टाइप करने की कोशिश करें ?mtcarsऔर mtcarsR प्रॉम्प्ट में देखें कि मेरा क्या मतलब है।
bdemarest

16

मैं xtableLaTeX दस्तावेजों के साथ संयोजन में सुझाव दूंगा। इस पीडीएफ में उदाहरणों पर एक नज़र डालें :

आप इसे सीधे Sweaveया इसके साथ जोड़ भी सकते हैं knitr


5
कृपया, कोई लिंक केवल उत्तर नहीं। प्रतिलिपि डेटा और उदाहरण आउटपुट के साथ न्यूनतम कोड उदाहरण रखना बहुत अच्छा होगा।
लेओ लेपोल्ड हर्ट्ज़ '

मुझे लगता है कि आलोचना को प्रश्नकर्ता पर निर्देशित किया जाना चाहिए। उन्होंने कोई न्यूनतम प्रजनन योग्य उदाहरण पेश नहीं किया । केवल उत्तरों को स्वीकार नहीं करने का सामान्य औचित्य यहां लागू नहीं होता है। यह सवाल 7 साल पुराना है और एक CRAN-sited विग्नेट का लिंक काफी स्थिर है।
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पैकेज मुद्रण के लिए एक अच्छा विकल्प है 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.")

1
मैंने पाया है कि यह सभी उत्तरों के बीच सबसे अच्छा विकल्प है, यदि आप एक निट-निर्मित पीडीएफ में डेटाफ्रेम को प्रिंट करना चाहते हैं।
snd

6

ग्रिड.टेबल सॉल्यूशन वास्तव में पीडीएफ बनाने का सबसे तेज तरीका होगा, लेकिन यदि आपके पास एक लंबी तालिका है, तो यह इष्टतम समाधान नहीं हो सकता है। 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}

Pls अधिक जानकारी के लिए इस पोस्ट को देखें।


यह जवाब डेटा और आउटपुट के न्यूनतम उदाहरण के साथ बहुत बेहतर होगा। अब, मैं इसे एक स्टब जवाब के रूप में महसूस करता हूं।
लेओ लेपोल्ड हर्ट्ज़ '

5

के लिए लंबे समय के / विस्तृत तालिकाओं आप इस्तेमाल कर सकते हैं बढ़ावा देना

यह स्वचालित रूप से पेज को फिट करने वाले छोटे हिस्सों में लंबी तालिकाओं को विभाजित करेगा, जैसे कि नाइट्र का उपयोग करके इस रंक को अपनी Rmd फाइल में डालें:

pander::pander(mtcars)

यहाँ छवि विवरण दर्ज करें

यदि आप कुछ ऐसा चाहते हैं जो एक्सेल टेबल की तरह दिखता है (यहां तक ​​कि HTML में संपादन के विकल्प के साथ) तो rhandsontable का उपयोग करें । उपयोग और में प्रारूपित करने के बारे में अधिक जानकारी शब्दचित्र । आपको अपनी Rmd को एक html फ़ाइल में बुनना होगा:

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

यहाँ छवि विवरण दर्ज करें


4

फैंसी के रूप में नहीं, लेकिन बहुत उपयोगी:

print.data.frame(iris)

1
यह स्क्रीन पर हो जाता है, लेकिन यह नहीं दिखाता है कि कैसे प्राप्त करें फिर कागज पर।
ब्रायन डिग्स

4

RStudio आईडीई बाहर एक data.table मुद्रित करने के लिए एक और अच्छा विकल्प देता है:

  1. व्यूअर में डेटा खोलें, उदाहरण के लिए View(data_table)या GUI के माध्यम से
  2. एक अलग विंडो में दृश्य खोलें (ऊपरी बाएं कोने पर आइकन: "नई विंडो में दिखाएं")
  3. अलग खिड़की अब एक प्रिंट संवाद (incl। पूर्वावलोकन) का समर्थन करती है

यह RStudio V0.98.1103 में काम करता है (और शायद नए संस्करण)


ऐसा लगता है कि अलग खिड़कियों के लिए प्रिंट संवाद RStudio V0.99 के साथ चला गया है।
kirk

1
आप इसे अभी भी दृश्य को राइट-क्लिक करके और "ओपन फ़्रेम" (v0.99.887) का चयन करके प्राप्त कर सकते हैं।
MPE


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()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.