2011-09-14 35 views
9

Có câu hỏi về cách sử dụng xtable với Sweave khi có nhiều cột. Một bảng tôi đang làm việc trên có khoảng 25 cột và 5 hàng. Số cột chính xác không được biết là động.Tách xtable ouput thành các bảng phụ

Khi tôi chạy nói,

table1 < - Bàn (df $ someField)

tôi nhận được một bảng mà về cơ bản vượt quá độ dài trang.

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

Nếu làm một xtable về vấn đề này, và chạy nó thông qua Sweave,

xtable(table1, caption="some table") 

nó tràn.

Những gì tôi đang tìm kiếm là một cái gì đó như thế nào,

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

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

với \ hline vv đánh dấu. Về cơ bản, chia xtable thành các phần bằng cách nói 5 cột cho mỗi "bảng con".

Tôi cũng đang chạy công việc này trong một đợt, vì vậy tôi sẽ không thể thực hiện thay đổi đối với từng tệp, bất kể giải pháp nào có thể được tạo bằng cách chạy Sweave trên tệp Rnw.

Cảm ơn trước,

Kính trọng,

  • Raj.
+0

Bạn cũng có thể muốn xem HMisc :: latex vì nó hỗ trợ định dạng dài. Tôi không phải là người dùng Sweave nhưng tôi nhận được đầu ra LaTeX tốt với chương trình đó. –

Trả lời

3

Đây là ví dụ về điều này từ ?latex.table.by trong gói taRifx. Bạn có thể pha một thứ gì đó tương tự bằng cách sử dụng longtable trong LaTeX và sử dụng mã latex.table.by làm nguyên mẫu.

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 

Bất kể gói longtable trong LaTeX là chìa khóa.

Chỉnh sửa: Có vẻ như bạn có quá nhiều cột không quá nhiều hàng. Trong trường hợp đó, trước tiên hãy thử tạo cảnh quan cho trang đó.

Trong tiêu đề:

\usepackage{lscape} 

Khoảng bảng của bạn:

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

Hoặc chỉ cần sử dụng sidewaystable.

Nếu bảng của bạn quá rộng để vừa với một trang, hãy thử gói supertabular, từ mô tả có vẻ như có thể xử lý vi phạm trên nhiều trang dựa trên chiều rộng (nhưng tôi chưa bao giờ sử dụng chắc chắn rồi).

+0

Xin chào gsk3, cảm ơn bạn đã phản hồi.Thật không may, số cột có thể khá cao (vì nó là một biến động phụ thuộc vào một số yếu tố khác). Vì vậy, để có được kết quả được đảm bảo, nó có thể không phù hợp với cảnh quan. Số hàng được cố định - 5-6. – xbsd

+0

@xbsd: Đã thêm đề xuất khác. Nếu 'supertabular' không hoạt động, hãy yêu cầu một mod để chuyển nó sang http://tex.stackexchange.com/ vì có các chuyên gia LaTeX thực tế ở đó. –

+1

@xbsd: tại sao bạn không chuyển đổi ma trận? Sau đó, bạn có một số lượng cố định và số lượng nhỏ các cols và một số lượng lớn các hàng. Điều đó rất dễ dàng với môi trường longtable (sử dụng tabular.environment = "longtable"). Giải pháp này là a) rất dễ dàng và b) sẽ chiếm ít dung lượng hơn trong tài liệu của bạn. – Thierry

Các vấn đề liên quan