أدوات لصنع جداول اللاتكس في R




latex (6)

أود إضافة علامة على حزمة "الشراب". يمكنك كتابة ملف قالب الشراب الذي سيكون LaTeX مع العناصر النائبة ، ثم "brew" إلى إنشاء ملف .tex إلى \ include أو \ input في LaTeX الخاص بك. شيء مثل:

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

يمكن أن تتعامل أيضًا بنية التركيب مع الحلقات ، بحيث يمكنك إنشاء صف جدول لكل صف في مخطط البيانات.

بناء على طلب عام ، ويكي المجتمع على إنتاج جداول اللاتكس في R. في هذا المنشور ، سأقدم نظرة عامة على الحزم والمدونات الأكثر شيوعًا مع رمز لإنتاج جداول اللاتكس من كائنات أقل مباشرة إلى الأمام. لا تتردد في إضافة أي فاتني ، و / أو إعطاء نصائح وتلميحات وحيل صغيرة حول كيفية إنتاج جداول لاتكس منسقة بشكل رائع مع R.

الحزم:

  • xtable : للجداول القياسية لمعظم الكائنات البسيطة. يمكن العثور على معرض جميل مع أمثلة here .
  • memisc : أداة لإدارة بيانات المسح ، تحتوي على بعض الأدوات لجداول اللاتكس لتقديرات نموذج الانحدار (الأساسي).
  • يحتوي Hmisc على دالة latex() تقوم بإنشاء ملف tex محتوي على الكائن المختار. انها مرنة جدا ، ويمكن أيضا إخراج الجداول اللاتكس longtable . هناك الكثير من المعلومات في ملف المساعدة ?latex
  • يمتلك miscFuncs وظيفة أنيقة "latextable" تقوم بتحويل بيانات المصفوفة بإدخالات أبجدية مختلطة رقمية إلى جدول LaTeX وتطبعها إلى وحدة التحكم ، بحيث يمكن نسخها ولصقها في مستند LaTeX.
  • حزمة texreg ( ورقة JSS ) تقوم بتحويل مخرجات النموذج الإحصائي إلى جداول LaTeX. يدمج نماذج متعددة. يمكن التعامل مع حوالي 50 طرازًا مختلفًا ، بما في ذلك نماذج الشبكات والنماذج متعددة المستويات (lme و lme4).
  • reporttools حزمة reporttools ( ورقة JSS ) خيارًا آخر للإحصائيات الوصفية reporttools والتاريخية.
  • ربما تكون حزمة tables هي أكثر مجموعة tables لايتكس العامة في R لإحصائيات وصفية
  • حزمة stargazer يجعل لطيفة جداول ملخص نموذج إحصائي مقارنة

المدونات ومقتطفات الشفرة

أسئلة ذات صلة :


حزمة stargazer هو خيار جيد آخر. وهو يدعم الكائنات من العديد من الوظائف والحزم الشائعة الاستخدام (lm، glm، svyreg، survival، pscl، AER) ، وكذلك من zelig. بالإضافة إلى جداول الانحدار ، يمكن أيضًا إنتاج إحصائيات موجزة لإطارات البيانات ، أو إخراج محتوى إطارات البيانات مباشرةً.


شكرا جوريس لخلق هذا السؤال. نأمل أن يتم تحويله إلى ويكي مجتمع.

حزم الكتب في اللاتكس تنتج طاولات لطيفة. فيما يلي مشاركة مدونة حول كيفية استخدام xtable لإنشاء جداول latex تستخدم دفتر العناوين

وأود أيضا أن أضيف الحزمة apsrtable إلى المزيج لأنها تنتج جداول الانحدار لطيفة.

فكرة أخرى: بعض هذه الحزم (espisc Memices و apsrtable) تسمح بإضافات سهلة للشفرة لإنتاج جداول لكائنات انحدار مختلفة. أحد الأمثلة على ذلك هو lme4 memisc code الذي يظهر في السؤال. قد يكون من المنطقي أن نبدأ مستودع جيثب لجمع مقتطفات الشفرة ، وبمرور الوقت ربما حتى إضافته إلى حزمة memisc. أي من الأشخاص يود ذلك؟


لدي بعض الحيل والعمل على "ميزات" مثيرة للاهتمام من xtable و Latex التي سوف أشارك هنا.

خدعة # 1: إزالة التكرارات في الأعمدة والخدعة # 2: استخدام Booktabs

أولا ، تحميل حزم وتحديد وظيفتي نظيفة

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

يستخدم هذا الجدول حزمة Booktab (ويحتاج إلى \ 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
@ 

يمكنك أيضًا استخدام وظيفة latextable من micsFuncs R package:

miscFuncs

المخطوطات اللونية (M) حيث M عبارة عن مصفوفة ذات إدخالات أبجدية مختلطة و رقمية تخرج جدول LaTeX أساسي على الشاشة ، والتي يمكن نسخها ولصقها في وثيقة LaTeX. عندما تكون هناك أعداد صغيرة ، فإنه يستبدلها أيضًا بتدوين فهرس (على سبيل المثال 1.2 × 10 ^ {- 3}).


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

أنتج الآن xtable ، وذلك باستخدام وظيفة sanitize لاستبدال أسماء الأعمدة بأوامر LATEX الجديدة الصحيحة (بما في ذلك الخطوط المائلة العكسية المزدوجة لذا R سعيد)

<<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 في نهاية المطاف \ ، لذا فنحن ننهي سطرًا فارغًا أسفل رأس الجدول.)







latex