在R中制作乳胶表的工具

在R中制作乳胶表的工具,r,latex,R,Latex,根据一般要求,我们提供了一个关于在R中生成latex表的社区wiki。在这篇文章中,我将概述最常用的包和博客,以及从不太直接的对象生成latex表的代码。请随意添加我遗漏的任何内容,和/或提供有关如何使用R生成格式良好的latex表的提示、提示和小技巧 包装: :用于大多数简单对象的标准表。可以找到一个很好的示例库 :用于管理调查数据的工具,包含一些用于(基本)回归模型估计的表格的工具 包含一个函数latex(),用于创建包含所选对象的tex文件。它非常灵活,还可以输出longtablelat

根据一般要求,我们提供了一个关于在R中生成latex表的社区wiki。在这篇文章中,我将概述最常用的包和博客,以及从不太直接的对象生成latex表的代码。请随意添加我遗漏的任何内容,和/或提供有关如何使用R生成格式良好的latex表的提示、提示和小技巧

包装:
  • :用于大多数简单对象的标准表。可以找到一个很好的示例库
  • :用于管理调查数据的工具,包含一些用于(基本)回归模型估计的表格的工具
  • 包含一个函数
    latex()
    ,用于创建包含所选对象的tex文件。它非常灵活,还可以输出
    longtable
    latex表。帮助文件中有很多信息
    ?latex
  • 有一个简洁的函数“latextable”,它可以将包含字母和数字混合输入项的矩阵数据转换为LaTeX表,并将其打印到控制台,这样就可以将它们复制并粘贴到LaTeX文档中
  • 包()将统计模型输出转换为LaTeX表。合并多个模型。可以处理大约50种不同的模型类型,包括网络模型和多级模型(lme和lme4)
  • package()是对连续变量、分类变量和日期变量进行描述性统计的另一个选项
  • package可能是R中用于描述性统计的最通用的LaTeX制表软件包
  • 包制作了很好的比较统计模型汇总表
博客和代码片段
  • 有一种方法给出了Latex中类似Stata的回归输出表。这个很好用
  • 如前一个问题中所述,有一个代码片段可供参考
相关问题:
  • ,具有非常灵活和有趣的语法,使用公式语言

    • 感谢Joris提出这个问题。希望它能成为一个社区维基

      latex中的booktabs软件包生成了漂亮的表格。下面是一篇关于如何使用xtable来

      我还将把
      apsrtable
      包添加到混合中,因为它生成了好看的回归表


      另一个想法是:其中一些包(特别是memisc和apsrtable)允许轻松扩展代码,为不同的回归对象生成表。问题中所示的lme4 memisc代码就是这样一个例子。启动github存储库来收集这样的代码片段可能是有意义的,随着时间的推移,甚至可能会将其添加到memisc包中。有人吗?

      我想补充一下“brew”软件包。您可以编写一个brew模板文件,该文件将是带有占位符的LaTeX,然后“brew”它以创建一个.tex文件,以\包括或\输入到LaTeX中。比如:

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

      brew语法还可以处理循环,因此您可以为数据帧的每一行创建一个表行。

      我有一些技巧和解决办法,我将在这里分享xtable和Latex有趣的“功能”

      技巧#1:删除列中的重复项和技巧#2:使用书籍标签

      首先,加载包并定义我的clean函数

      <<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)} 
      
      =
      图书馆(xtable)
      图书馆(plyr)
      清洁。。。和技巧#Xtable中的3个多行条目

      生成更多数据

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

      moredata包taRifx中的两个实用程序可以协同使用,以生成嵌套继承人的多行表

      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
      
      库(数据集)
      图书馆(taRifx)
      图书馆(xtable)
      
      test.by您还可以使用R包micsFuncs中的latextable函数:


      latextable(M),其中M是字母和数字混合输入的矩阵,将基本LaTeX表输出到屏幕上,可将其复制并粘贴到LaTeX文档中。如果有小的数字,它也会用索引符号(例如1.2x10^{-3})来代替它们。

      将多元回归模型聚合到LaTeX表中的另一个R包是。

      该包是另一个很好的选择。它支持许多常用函数和包(lm、glm、svyreg、survival、pscl、AER)以及zelig中的对象。除了回归表之外,它还可以输出数据帧的汇总统计信息,或者直接输出数据帧的内容。

      有没有一种方法可以做类似的事情,但是可以使用整个数据帧,而不是使用bytable()输入的一个向量?交叉验证(stats.SE),此处的读者将对以下博文感兴趣:。您也可以使用ztable。它使LaTeX和HTML格式的斑马条纹表格变得容易。它非常灵活和简单:建议使用什么“过程”来处理R(或RStudio)中的许多表,并从外部Latex程序(如TexStudio)中使用它们来将它们嵌入到更大的项目中?@skan是Latex特有的。如果您创建“子”文档,则可以将其创建为latex文档,并使用
      include
      input
      。您可以使用
      writeLines()
      ,它可以与
      kable()
      xtable()
      一起使用。存储为.tex文件和problem solved.OTOH,如果您使用多个文档并希望将它们合并到一个文档中(您对该文档不清楚),则可以创建文档,然后使用
      input
      将一个文档合并到其他文档中。latex手册将告诉您,这与在该位置键入文档内容相同,因此无需复制粘贴序言中的整个设置。包R.rsp及其函数rstring()类似于brew::brew()。不确定它是否更好,但包装肯定有更多的东西。在这两种情况下,我都喜欢这种方法,因为它在不牺牲再现性的情况下为tex代码提供了更大的灵活性。
      <<label=normal, results=tex, echo=FALSE>>=
      print(
          xtable(
              datatable
              ),
              tabular.environment='longtable',
              latex.environments=c("center"), 
              floating=FALSE, 
              include.rownames=FALSE
          )
      @ 
      
      <<label=cleandata, results=tex, echo=FALSE>>=
      print(
          xtable(
              cleandata
              ),
              tabular.environment='longtable',
              latex.environments=c("center"), 
              floating=FALSE, 
              include.rownames=FALSE
          )
      @ 
      
      \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
      @ 
      
      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)
                  })
      @  
      
      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