2012-02-16 3 views
5

Tôi đang tạo ra rất nhiều dấu ngoặc kép cho một báo cáo mô tả. Ví dụ:Hiệu chỉnh màu/làm nổi bật giá trị của đầu ra R ftable() trong knitr/Sweave rapports

   AUS BEL BUL EST FRA GEO GER HUN ITA NET NOR ROM RUS 

30- primary 0.06 0.03 0.07 0.03 0.02 0.03 0.03 0.02 0.05 0.03 0.05 0.04 0.02 
    secondary 0.30 0.09 0.16 0.10 0.10 0.14 0.10 0.16 0.11 0.08 0.08 0.09 0.11 
    tertiary 0.05 0.07 0.04 0.05 0.07 0.06 0.02 0.04 0.02 0.05 0.06 0.02 0.09 
30+ primary 0.07 0.16 0.12 0.07 0.16 0.03 0.05 0.11 0.35 0.21 0.09 0.17 0.03 
    secondary 0.40 0.20 0.30 0.29 0.25 0.35 0.35 0.34 0.27 0.20 0.27 0.34 0.26 
    tertiary 0.13 0.23 0.13 0.18 0.17 0.17 0.18 0.09 0.09 0.23 0.23 0.06 0.24 
60+ primary 0.00 0.12 0.10 0.13 0.14 0.07 0.05 0.12 0.09 0.11 0.06 0.19 0.12 
    secondary 0.00 0.05 0.05 0.08 0.06 0.10 0.14 0.09 0.02 0.04 0.11 0.07 0.06 
    tertiary 0.00 0.05 0.03 0.06 0.03 0.04 0.07 0.03 0.01 0.05 0.06 0.02 0.07 

Tôi đang tìm kiếm một chức năng mà có thể lấy ftable() hoặc table() đầu ra, và các giá trị Tô sáng mà đi chệch khỏi hàng-trung bình, hoặc gán một gradient tổng thể đến các văn bản của các giá trị, ví dụ từ 0-100% các giá trị được tô màu từ đỏ sang xanh lục.

Đầu ra hiện được xử lý qua knitr, nhưng tôi không chắc chắn tại điểm nào trong chuỗi công cụ tôi có thể can thiệp và thêm màu dựa trên kích thước tương đối của các giá trị.

+0

Bạn cũng có thể đăng câu hỏi này trên trang trao đổi TeX/LaTeX nếu bạn không nhận được phản hồi tốt ở đây. –

Trả lời

5

Bạn có thể sử dụng chức năng latex, trong gói Hmisc.

# Example shamelessly copied from http://www.karlin.mff.cuni.cz/~kulich/vyuka/Rdoc/harrell-R-latex.pdf 
cat(' 
    \\documentclass{article} 
    \\usepackage[table]{xcolor} 
    \\begin{document} 
    <<results=tex>>= 
    library(Hmisc) 
    d <- head(iris) 
    cellTex <- matrix(rep("", nrow(d) * ncol(d)), nrow=nrow(d)) 
    cellTex[2,2] <- "cellcolor{red}" 
    cellTex[2,3] <- "color{red}" 
    cellTex[5,1] <- "rowcolor{yellow}" 
    latex(d, file = "", cellTexCmds = cellTex, rowname=NULL) 
    @ 
    \\end{document}', 
    file="tmp.Rnw") 
Sweave("tmp.Rnw") 
library(utils) 
texi2pdf("tmp.tex") 
+1

1+ cho Hmisc :: ví dụ về latex. Với số lượng nội dung hữu ích mà tôi đã nhận được từ các trang của bạn, Vincent, tôi nghĩ bạn sẽ nhận được một thẻ miễn phí trên mọi bản sao không biết xấu hổ mà bạn làm. –

2

Để tạo bảng latex từ đối tượng R, bạn có thể sử dụng gói xtable. Đó là available on CRAN, hãy xem tài liệu. Để lấy màu trong bảng, hãy sử dụng gói cao su color. Một số mã ví dụ:

library(xtable) 
n = 100 
cat_country = c("NL","BE","HU") 
cat_prim = c("primary","secondary","tertiary") 
dat = data.frame(country = sample(cat_country, n, replace = TRUE), 
       prim = sample(cat_prim, n, replace = TRUE)) 
ftable_dat = ftable(dat) 

## Make latex table: 
latex_table = xtable(as.table(ftable_dat)) 

Để nhận được những gì bạn muốn Tôi đã thực hiện theo dõi sau (xấu xí). Bí quyết là để in các đối tượng xtable và vì chỉnh sửa mà:

latex_table = within(latex_table, { 
# browser() 
    primary = ifelse(primary > 12, sprintf("\\textbf{%s}", primary), primary) 
    #primary = sub("\\{", "{", primary) 
}) 
printed_table = print(latex_table) 
printed_table = sub("backslash", "\\", printed_table) 
printed_table = sub("\\\\}", "}", printed_table) 
printed_table = sub("\\\\\\{", "{", printed_table) 
printed_table = sub("\\$", "\\", printed_table) 
printed_table = sub("\\$", "\\", printed_table) 
cat(printed_table) 

Dẫn đến:

% latex table generated in R 2.14.1 by xtable 1.6-0 package 
% Thu Feb 16 13:10:55 2012 
\begin{table}[ht] 
\begin{center} 
\begin{tabular}{rrrr} 
    \hline 
& primary & secondary & tertiary \\ 
    \hline 
BE & 10 & 5 & 11 \\ 
    HU & \textbf{13} & 13 & 8 \\ 
    NL & 11 & 17 & 12 \\ 
    \hline 

\ end {tabular} \ end {center} \ end {table}

Ví dụ này làm cho một số trong danh mục chính được in đậm, nhưng nó có thể hoạt động để tô màu một cách dễ dàng. Có lẽ ai đó có một giải pháp thanh lịch hơn?