2016-11-30 3 views
3

У меня есть эта таблица в файле .RMD, и я хотел бы сделать в PDF с условным форматированием. В настоящее время я использую pandoc. Как это можно сделать с помощью xxtable?Как может xxtable делать окраску ячеек

table = data.frame(category = c("A","B","C"), groupA = c(.2,.3,.5), groupB= c(.6,.7,.9)) 
table 
pandoc.table(table,split.table = Inf,keep.line.breaks = TRUE) 

---------------------------- 
category groupA groupB 
---------- -------- -------- 
    A  0.2  0.6 

    B  0.3  0.7 

    C  0.5  0.9 
---------------------------- 

Как окрасить клетки "GroupA" и столбцы "GroupB" с помощью условного форматирования, как:

>0 and <= .2 = "green" 
>.2 and <= .3 = "red" 
>.3 and <= .4 = "blue" 
>.4 and <= .5  = "orange" 
>.5 and <= .6  = "yellow" 
>.6 and <= .7  = "black" 
>.7 and <= .8  = "brown" 
>.8 = "white" 

ответ

3

Вы можете обернуть соответствующие записи в таблице n латексным кодом (from here), а затем дезинфицировать результаты xtable.

Пример:

--- 
header-includes: 
    - \usepackage{xcolor, colortbl} 
output: 
    pdf_document 
--- 

```{r, results="asis"} 

library(xtable) 
# Your data 
tab = data.frame(category = c("A","B","C"), groupA = c(.2,.3,.5), groupB= c(.6,.7,.9)) 

# Function to cut your data, and assign colour to each range 
f <- function(x) cut(x, c(0, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, Inf), 
         labels=c("green", "red", "blue", "orange", "yellow", "purple", "brown", "white"), 
         include.lowest = FALSE, right = TRUE) 

# Apply function to columns: this overwrites your data 
tab[c("groupA", "groupB")] <- lapply(tab[c("groupA", "groupB")], function(x) 
              paste0("\\cellcolor{", f(x), "}", x)) 
# Sanitise output 
print(xtable(tab), sanitize.text.function = identity) 
``` 

который производит

enter image description here

+0

Я получаю эту ошибку! Экран дополнительного выравнивания был изменен на \ cr. <последнее чтение> \ endtemplate – user3022875

+0

@ user3022875; Я только что скопировал и вставил код из моего ответа в новый .Rmd-файл, и он работал как ожидалось. добавили ли вы что-нибудь, например, изменили количество столбцов или выровняли? – user20650

+0

no havent ничего не добавлено – user3022875