R:用xtable()打印两个表

时间:2011-06-07 09:42:31

标签: r sweave

我有数据表(d1和d2),我想在乳胶中并排或相互打印各自的标题。是否可以直接使用xtable()执行此操作?这两个表应该是不同的,即我们可以将它们称为表x(a)表x(b),但它们应该相邻或堆叠。

2 个答案:

答案 0 :(得分:14)

我建议将结果保存为不同文件中的两个单独的表(请参阅file=的{​​{1}}选项),然后使用您找到的任何命令将它们print.xtable()放入LaTeX文档中适合您的布局(inputtabularsubfloat等。这是我一般的做法,虽然我通常依赖Hmisc包中的LaTeX工具。如果您只想将它​​们打印为独立的PDF,请使用文档的minipage类。

所以,这是一个例子:

standalone

然后,快速tex包装器(使用data(tli) fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data=tli) print(xtable(fm1), file="ta.tex", floating=FALSE) print(xtable(head(tli, n=5)), file="tb.tex", floating=FALSE) 编译):

pdflatex

结果如下:

enter image description here

删除默认(堆叠)布局的\documentclass{article} \usepackage{subfig} \usepackage{graphicx} \begin{document} \begin{table}[ht] \centering \subfloat[Table x(a)]{\label{tab:tab1a}\scalebox{.5}{\input{./ta}}}\quad \subfloat[Table x(b)]{\label{tab:tab1b}\scalebox{.5}{\input{./tb}}} \caption{Caption about here} \label{tab:tab1} \end{table} \end{document} 命令,除非它们足够窄以适合其默认大小,如@David所述。

enter image description here

答案 1 :(得分:10)

请参阅Alan Munn's answer to a similar question on tex.stackexchange.com

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{caption}
\title{Side-by-side xtables}
\author{}
\date{}
\begin{document}
\maketitle
First some R code to create some data.
<<>>=
myData <- matrix(c(19,89,23,23,74,44,16,39,67),ncol=3,byrow=TRUE)
colnames(myData) <- c("A","B","C")
rownames(myData) <- c("1","2","3")
myData2 <- myData * 2
@

Now we place the data in two side-by-side tables:

\begin{table}[htb]
\begin{minipage}{.45\textwidth}
\centering
<<echo=FALSE,results=tex>>=
library("xtable")
print(xtable(myData),
  floating=FALSE,
  hline.after=NULL,
  add.to.row=list(pos=list(-1,0, nrow(myData)),
  command=c('\\toprule\n','\\midrule\n','\\bottomrule\n')))
@
\captionof{table}{The first table}
\end{minipage}
\begin{minipage}{.45\textwidth}
\centering
<<echo=FALSE,results=tex>>=
print(xtable(myData2),
  floating=FALSE,
  hline.after=NULL,
  add.to.row=list(pos=list(-1,0, nrow(myData2)),
  command=c('\\toprule\n','\\midrule\n','\\bottomrule\n')))
@
\captionof{table}{The second table}
\end{minipage}
\end{table}
\end{document}

output of code