R [बंद] में लेटेक्स टेबल बनाने के लिए उपकरण


268

सामान्य अनुरोध पर, एक समुदाय आर में लेटेक्स टेबल का उत्पादन करने पर विकि करता है। इस पोस्ट में मैं कम सीधे-आगे की वस्तुओं से लेटेक्स टेबल बनाने के लिए कोड के साथ सबसे अधिक इस्तेमाल किए जाने वाले पैकेज और ब्लॉग का अवलोकन दूंगा। कृपया मुझे कोई भी जोड़ने के लिए स्वतंत्र महसूस करें, और / या टिप्स दें, संकेत दें और आर के साथ अच्छी तरह से स्वरूपित लेटेक्स तालिकाओं का उत्पादन करने के तरीके के बारे में बताएं।

पैकेज:

  • xtable : सबसे साधारण वस्तुओं के मानक तालिकाओं के लिए। उदाहरणों के साथ एक अच्छी गैलरी यहां पाई जा सकती है
  • मेमिस : सर्वेक्षण डेटा के प्रबंधन के लिए उपकरण, (मूल) प्रतिगमन मॉडल अनुमानों के लेटेक्स तालिकाओं के लिए कुछ उपकरण शामिल हैं।
  • Hmisc में एक फ़ंक्शन होता है latex()जो एक टेक्स फाइल बनाता है जिसमें पसंद की वस्तु होती है। यह बहुत लचीला है, और longtableलेटेक्स टेबलों का उत्पादन भी कर सकता है । मदद फ़ाइल में बहुत सारी जानकारी है?latex
  • miscFuncs में एक नीट फ़ंक्शन 'लेटेक्सटेबल' है, जो मैट्रिक्स डेटा को मिश्रित अल्फाबेटिक और न्यूमेरिक एंट्रीज़ के साथ एक LaTeX टेबल में परिवर्तित करता है और उन्हें कंसोल पर प्रिंट करता है, इसलिए उन्हें एक LTeX दस्तावेज़ में कॉपी और पेस्ट किया जा सकता है।
  • टेक्सग्राम पैकेज ( JSS पेपर ) सांख्यिकीय मॉडल आउटपुट को LaTeX तालिकाओं में परिवर्तित करता है। कई मॉडल जोड़ता है। नेटवर्क मॉडल और बहुस्तरीय मॉडल (lme और lme4) सहित लगभग 50 विभिन्न मॉडल प्रकारों का सामना कर सकते हैं।
  • रिपोर्टटूल पैकेज ( जेएसएस पेपर ) निरंतर, श्रेणीबद्ध और तिथि चर पर वर्णनात्मक आंकड़ों के लिए एक और विकल्प है।
  • टेबल पैकेज संभवतः वर्णनात्मक आंकड़ों के लिए आर में सबसे सामान्य लाटेक्स टेबल मेकिंग पैकेज है
  • Stargazer पैकेज अच्छा तुलनात्मक सांख्यिकीय मॉडल सारांश तालिका बनाता है

ब्लॉग और कोड स्निपेट

संबंधित सवाल :


4
क्रॉस वैलिडेटेड (आँकड़ा। एसई) पर, निम्न ब्लॉग पोस्ट यहाँ पाठकों के लिए रूचिकर होगी: प्रभावी टेबल बनाने पर कुछ नोट्स
गंग -

2
तुम भी ztable का उपयोग कर सकते हैं। यह लैटेक्स और HTML प्रारूपों में ज़ेबरा-धारीदार तालिकाओं को आसानी से बनाता है। यह काफी लचीला और सरल है: cran.r-project.org/web/packages/ztable/vignettes/ztable.html
skan

आर (या RStudio) में कई तालिकाओं के साथ काम करने और उन्हें एक बाहरी लेटेक्स प्रोग्राम, जैसे टेक्सस्टडियो से उपयोग करने के लिए एक बहुत बड़ी परियोजना में एम्बेड करने के लिए "प्रक्रिया" क्या है?
स्केन

1
@skan लेटेक्स विशिष्ट है। यदि आप "बच्चे" दस्तावेज़ बनाते हैं, तो आप उन्हें लेटेक्स दस्तावेज़ के रूप में बनाते हैं और includeया तो उपयोग करते हैं input। आप उपयोग कर सकते हैं writeLines()जो दोनों के साथ काम करता है kable()और xtable()। .Tex फ़ाइलें और समस्या हल के रूप में संग्रहीत करें।
जोरिस मे

1
OTOH, यदि आप कई दस्तावेज़ों का उपयोग करते हैं और उन्हें एक में संयोजित करना चाहते हैं (आप उस पर स्पष्ट नहीं हैं), तो आप दस्तावेज़ बनाते हैं और आप inputएक दस्तावेज़ को दूसरे में लाने के लिए उपयोग करते हैं। लेटेक्स मैनुअल आपको बताएगा कि यह उस स्थान पर दस्तावेज़ की सामग्री टाइप करने के समान है, इसलिए आपको प्रस्तावना में किए गए पूरे सेटअप को कॉपी-पेस्ट करने की कोई आवश्यकता नहीं है।
जोरिस मे

जवाबों:


22

मैं "काढ़ा" पैकेज का उल्लेख जोड़ना चाहूंगा। आप एक काढ़ा टेम्पलेट फ़ाइल लिख सकते हैं, जो प्लेसहोल्डर्स के साथ LaTeX होगी, और फिर अपने .TX में \। या इनपुट शामिल करने के लिए एक .tex फ़ाइल बनाने के लिए इसे "काढ़ा" करें। कुछ इस तरह:

\begin{tabular}{l l}
A & <%= fit$A %> \\
B & <%= fit$B %> \\
\end{tabular}

काढ़ा वाक्यविन्यास भी छोरों को संभाल सकता है, इसलिए आप डेटाफ़्रेम की प्रत्येक पंक्ति के लिए एक तालिका पंक्ति बना सकते हैं।


पैकेज R.rsp और इसका फ़ंक्शन rstring (), brew :: brew () के समान है। यकीन नहीं है कि यह बेहतर है, लेकिन पैकेज में निश्चित रूप से अधिक सामान है। या तो मैं इस दृष्टिकोण को पसंद करता हूं क्योंकि यह प्रतिलिपि कोड में अधिक लचीलापन देता है जबकि प्रतिलिपि प्रस्तुत करने योग्यता का त्याग नहीं करता है।
रिचर्ड डिसाल्वो

21

इस सवाल को बनाने के लिए धन्यवाद जॉरिस। उम्मीद है, इसे एक सामुदायिक विकि में बनाया जाएगा।

लेटेक्स में बुकटैब पैकेज अच्छे दिखने वाले तालिकाओं का उत्पादन करता है। यहाँ एक ब्लॉग पोस्ट है कि बुकटेब का उपयोग करने वाले लेटेक्स टेबल बनाने के लिए xtable का उपयोग कैसे करें

मैं apsrtableमिश्रण में पैकेज भी जोड़ूंगा क्योंकि यह अच्छा दिखने वाला प्रतिगमन तालिकाओं का निर्माण करता है।

एक और आइडिया: इनमें से कुछ पैकेज (esp। मेमिस और अप्सरेटेबल) अलग-अलग ऑब्जेक्ट्स के लिए तालिकाओं का निर्माण करने के लिए कोड के आसान एक्सटेंशन की अनुमति देते हैं। ऐसा ही एक उदाहरण प्रश्न में दिखाया गया lme4 मेमिस कोड है। इस तरह के कोड स्निपेट्स को इकट्ठा करने के लिए एक गितब रिपॉजिटरी शुरू करना समझदारी हो सकता है, और समय के साथ शायद इसे यादगार पैकेज में भी जोड़ सकता है। कोई लेने वाला?


18

ज्योतिषी पैकेज एक और अच्छा विकल्प है। यह कई सामान्य रूप से उपयोग किए जाने वाले कार्यों और पैकेज (lm, glm, svyreg, अस्तित्व, pscl, AER), साथ ही साथ ज़ेलिग से वस्तुओं का समर्थन करता है। प्रतिगमन तालिकाओं के अलावा, यह डेटा फ़्रेम के लिए सारांश आंकड़े भी आउटपुट कर सकता है, या सीधे डेटा फ़्रेम की सामग्री को आउटपुट कर सकता है।


15

मेरे पास कुछ ट्रिक्स हैं और चारों ओर काम करने के लिए xtable और लेटेक्स के दिलचस्प 'फीचर्स' हैं जो मैं यहाँ साझा करूँगा।

ट्रिक # 1: कॉलम में डुप्लिकेट हटाना और ट्रिक # 2: बुकटैब्स का उपयोग करना

सबसे पहले, संकुल को लोड करें और मेरे स्वच्छ कार्य को परिभाषित करें

<<label=first, include=FALSE, echo=FALSE>>= 
    library(xtable)
    library(plyr)

    cleanf <- function(x){     
        oldx <- c(FALSE, x[-1]==x[-length(x)])  
        # is the value equal to the previous?    
        res <- x
        res[oldx] <- NA
        return(res)} 

अब कुछ नकली डेटा उत्पन्न करते हैं

data<-data.frame(animal=sample(c("elephant", "dog", "cat", "fish", "snake"), 100,replace=TRUE),
            colour=sample(c("red", "blue", "green", "yellow"), 100,replace=TRUE),
            size=rnorm(100,mean=500, sd=150),
            age=rlnorm(100, meanlog=3, sdlog=0.5))

    #generate a table
    datatable<-ddply(data, .(animal, colour), function(df) {
                return(data.frame(size=mean(df$size), age=mean(df$age)))
            })

अब हम एक तालिका उत्पन्न कर सकते हैं, और लेबल कॉलम में डुप्लिकेट प्रविष्टियों को हटाने के लिए स्वच्छ फ़ंक्शन का उपयोग कर सकते हैं।

cleandata<-datatable
cleandata$animal<-cleanf(cleandata$animal)
cleandata$colour<-cleanf(cleandata$colour)
@ 

यह एक सामान्य xtable है

<<label=normal, results=tex, echo=FALSE>>=
print(
    xtable(
        datatable
        ),
        tabular.environment='longtable',
        latex.environments=c("center"), 
        floating=FALSE, 
        include.rownames=FALSE
    )
@ 

यह एक सामान्य xtable है जहां एक कस्टम फ़ंक्शन ने डुप्लिकेट को NA में बदल दिया है

<<label=cleandata, results=tex, echo=FALSE>>=
print(
    xtable(
        cleandata
        ),
        tabular.environment='longtable',
        latex.environments=c("center"), 
        floating=FALSE, 
        include.rownames=FALSE
    )
@ 

यह तालिका बुकटैब पैकेज का उपयोग करती है (और हेडर में एक \ usepackage {booktabs} की आवश्यकता है)

\begin{table}[!h] 
        \centering
        \caption{table using booktabs.}
        \label{tab:mytable}
<<label=booktabs, echo=F,results=tex>>= 
            mat <- xtable(cleandata,digits=rep(2,ncol(cleandata)+1))
            foo<-0:(length(mat$animal))
            bar<-foo[!is.na(mat$animal)]
            print(mat, 
                  sanitize.text.function = function(x){x},
                  floating=FALSE,
                  include.rownames=FALSE,
                  hline.after=NULL, 
                  add.to.row=list(pos=list(-1,bar,nrow(mat)), 
                  command=c("\\toprule ", "\\midrule ", "\\bottomrule ")))
  #could extend this with \cmidrule to have a partial line over
  #a sub category column and \addlinespace to add space before a total row
@ 

12

पैकेज टैरिफ में दो उपयोगिताओं का उपयोग कंसर्ट में नेस्टेड हेइरार्कीज की बहु-पंक्ति तालिकाओं का निर्माण करने के लिए किया जा सकता है।

library(datasets)
library(taRifx)
library(xtable)

test.by <- bytable(ChickWeight$weight, list( ChickWeight$Chick, ChickWeight$Diet) )
colnames(test.by) <- c('Diet','Chick','Mean Weight')
print(latex.table.by(test.by), include.rownames = FALSE, include.colnames = TRUE, sanitize.text.function = force)
#   then add \usepackage{multirow} to the preamble of your LaTeX document
#   for longtable support, add ,tabular.environment='longtable' to the print command (plus add in ,floating=FALSE), then \usepackage{longtable} to the LaTeX preamble

नमूना तालिका उत्पादन


2
क्या एक समान कार्य करने का एक तरीका है, लेकिन बायसेटेबल () के साथ इनपुट के बजाय पूरे डेटा फ़्रेम के साथ एक ही वेक्टर है?
थरुपीड़ा

5

... और चाल # 3 एक Xtable में बहु प्रविष्टी

कुछ और डेटा जनरेट करें

moredata<-data.frame(Nominal=c(1:5), n=rep(5,5), 
        MeanLinBias=signif(rnorm(5, mean=0, sd=10), digits=4), 
        LinCI=paste("(",signif(rnorm(5,mean=-2, sd=5), digits=4),
                ", ", signif(rnorm(5, mean=2, sd=5), digits=4),")",sep=""),
        MeanQuadBias=signif(rnorm(5, mean=0, sd=10), digits=4), 
        QuadCI=paste("(",signif(rnorm(5,mean=-2, sd=5), digits=4),
                ", ", signif(rnorm(5, mean=2, sd=5), digits=4),")",sep=""))

names(moredata)<-c("Nominal", "n","Linear Model \nBias","Linear \nCI", "Quadratic Model \nBias", "Quadratic \nCI")

अब स्तंभों के नामों को बदलने के लिए सही लेटेक्स न्यूलाइन कमांड (जिसमें डबल बैकस्लैश भी शामिल है, जिससे आर खुश है) के साथ सैनिटाइज़ फंक्शन का उपयोग करके, हमारे ऑक्सटेबल का उत्पादन करें।

<<label=multilinetable, results=tex, echo=FALSE>>=
foo<-xtable(moredata)
align(foo) <- c( rep('c',3),'p{1.8in}','p{2in}','p{1.8in}','p{2in}' )
print(foo, 
            floating=FALSE, 
            include.rownames=FALSE,
            sanitize.text.function = function(str) {
                str<-gsub("\n","\\\\", str, fixed=TRUE)

                return(str)
            }, 
            sanitize.colnames.function = function(str) {
                str<-c("Nominal", "n","\\centering Linear Model\\\\ \\% Bias","\\centering Linear \\\\ 95\\%CI", "\\centering Quadratic Model\\\\ \\%Bias", "\\centering Quadratic \\\\ 95\\%CI \\tabularnewline")
                return(str)
            })
@  

(हालांकि यह सही नहीं है, क्योंकि हमें \ tabularnewline की आवश्यकता है ताकि तालिका सही ढंग से स्वरूपित हो, और Xtable अभी भी एक अंतिम \ _ में रखता है, इसलिए हम तालिका शीर्ष लेख के नीचे एक रिक्त रेखा के साथ समाप्त होते हैं।)


5

आप आर पैकेज micsFuncs से लेटेक्सटेबल फ़ंक्शन का उपयोग कर सकते हैं:

http://cran.r-project.org/web/packages/miscFuncs/index.html

लेटेक्सटेबल (एम) जहां एम मिश्रित अल्फाबेटिक और न्यूमेरिक प्रविष्टियों के साथ एक मैट्रिक्स है, स्क्रीन पर एक बुनियादी लाटेक्स तालिका को आउटपुट करता है, जिसे एक लाटेकस दस्तावेज़ में कॉपी और पेस्ट किया जा सकता है। जहाँ छोटी संख्याएँ होती हैं, उन्हें ये इंडेक्स नोटेशन (जैसे 1.2x10 ^ {- 3}) के साथ बदल देता है।


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