2011-09-14 40 views
9

有多個列時使用xtable和Sweave的問題。我正在研究的表格大約有25列和5行。不知道列的確切數量是動態的。拆分xtable輸出到子表中

當我跑說,

table1的< - 表(DF $ someField)

我得到基本上超過頁長度的圖表。

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

如果做這個xtable,並通過Sweave運行它,

xtable(table1, caption="some table") 

溢出。

我所尋找的是一樣的東西,

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

     ColD ColE ColF 
--------------------------- 
RowA 11  9  34 
RowB 36  8  65 

與\ HLINE等標記。基本上,按照每個「子表」的5列將xtable分成幾部分。

我也在一個批處理作業中運行它,所以我無法對單個文件進行更改,無論它通過在Rnw文件上運行Sweave都能生成哪種解決方案。

由於提前,

問候,

  • 拉吉。
+0

你可能也想看看Hmisc :: latex,因爲它支持longtable格式。我不是一個Sweave用戶,但是我使用該程序獲得了良好的LaTeX輸出。 –

回答

3

下面是taRifx包中的?latex.table.by的一個示例。您可以在LaTeX中使用longtable來製作類似的東西,並使用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 

無論如何,在LaTeX中的longtable包是關鍵。

編輯:看起來你有太多的列沒有太多的行。在這種情況下,首先嚐試美化該頁面。

在標題:

\usepackage{lscape} 

在你的表:

\begin{landscape} 
... 
\end{landscape} 

或者只是使用sidewaystable

如果您的表太寬而無法放在一個頁面中,請嘗試使用supertabular包,該包從描述中聽起來像可能會根據寬度處理多個頁面(但我從未使用過,因此不能當然)。

+0

嗨gsk3,感謝您的反饋。不幸的是,列的數量可能相當高(因爲它是一個取決於其他因素的動態變量)。所以,爲了獲得有保證的結果,它可能不適合於景觀。行數是固定的 - 5-6。 – xbsd

+0

@xbsd:增加了另一個建議。如果'supertabular'不起作用,那麼請求mod將它遷移到http://tex.stackexchange.com/,因爲那裏有真正的LaTeX專家。 –

+1

@xbsd:你爲什麼不轉換矩陣?然後你有一個固定和少量的cols和大量的行。使用longtable環境很容易(使用tabular.environment =「longtable」)。這個解決方案是非常簡單的,並且b)將佔用文檔中更少的空間。 – Thierry