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