将xtable输出拆分为子表

xbs*_*bsd 9 r sweave

当有多个列时,对使用带有Sweave的xtable有疑问.我正在处理的表有大约25列和5行.确切的列数不知道是动态的.

我跑的时候说,

table1 < - table(df $ someField)

我得到一个基本上超过页面长度的表.

       ColA    ColB    ColC
---------------------------
RowA   1       2       3   ......
RowB   3       4       6   ......
Run Code Online (Sandbox Code Playgroud)

如果做一个xtable,并通过Sweave运行,

xtable(table1, caption="some table")
Run Code Online (Sandbox Code Playgroud)

它溢出来了.

我正在寻找的是,像,

       ColA    ColB    ColC
---------------------------
RowA   1       2       3 
RowB   3       4       6 

       ColD    ColE    ColF 
---------------------------
RowA   11       9       34 
RowB   36       8       65  
Run Code Online (Sandbox Code Playgroud)

使用\ hline等标记.基本上,将xtable分成每个"子表"5列的部分.

我也在批处理作业中运行它,所以无法通过在Rnw文件上运行Sweave生成解决方案,无法对单个文件进行更改.

提前致谢,

问候,

  • 拉吉.

Ari*_*man 3

这是包?latex.table.by中的一个示例taRifxlongtable您可以在 LaTeX 中使用类似的东西,并将latex.table.by代码用作原型。

my.test.df <- data.frame(grp=rep(c("A","B"),10),data=runif(20))
library(xtable)
latex.table.by(my.test.df)
#   print(latex.table.by(test.df), 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
Run Code Online (Sandbox Code Playgroud)

不管怎样,longtableLaTeX 中的包是关键。

编辑:看来您的列太多,而不是行太多。在这种情况下,首先尝试仅美化该页面。

在标题中:

\usepackage{lscape}
Run Code Online (Sandbox Code Playgroud)

在你的桌子周围:

\begin{landscape}
...
\end{landscape}
Run Code Online (Sandbox Code Playgroud)

或者只是使用sidewaystable.

如果您的表格太宽而无法容纳一页,请尝试该supertabular软件包,从描述来看,该软件包可能会根据宽度处理跨多个页面的问题(但我从未使用过它,因此无法确定)。