我找到了包condformat,可以轻松地从data.frames创建彩色表。
您可以运行其中一个示例。
data(iris)
library(condformat)
condformat(iris[c(1:5,70:75, 120:125),]) +
rule_fill_discrete(Species) +
rule_fill_discrete(Sepal.Width, Sepal.Length,expression = Sepal.Width > Sepal.Length - 2.25, colours = c("TRUE" = "#7D00FF")) + rule_fill_gradient2(Petal.Length)
如果我生成一个html,我可以在降价文档中使用它。
但是我无法用它来生成pdf。 我已经尝试过knitr和rmarkdown。 Knitr产生错误:
Overfull \hbox (22.4968pt too wide) in paragraph at lines 62--62
Missing $ inserted.
和许多
You can't use `macro parameter character #' in math mode.
当我尝试将代码嵌入到rmarkdown块中时,它不会产生任何错误,但输出只是一个包含许多数字的单列,没有颜色。
我已经尝试过结果='asis',没有它。
如何在使用Rnw Knitr创建pdf时获取这些表格?
有时我会用xtable或ztable得到类似的结果,但如果你想选择性地为单元格着色,前者是非常困难的,而后者有时候效果不好。例如,我无法在ztable表格中以科学格式打印数字。
答案 0 :(得分:2)
我认为你很难将condformat
打印到PDF是因为它不支持PDF输出。它只支持HTML输出(除非我在手册中没有看到任何内容)。
所以,如果你原谅一些无耻的自我推销,我会向你推荐pixiedust
包。缺点是pixiedust
没有一些简洁的功能,比如自动颜色选择或condformat
具有的渐变,但这些都是我现在正在进行清单的事情。
pixiedust
的优点是它支持使用相同语法的HTML和LaTeX / PDF输出。下面的RMarkdown脚本将生成一个类似于condformat
中的示例的表,您可以在Knit PDF和Knit HTML之间切换以获得相同的演示文稿。
---
title: "Untitled"
output: pdf_document
date: "May 6, 2016"
header-includes:
- \usepackage{amssymb}
- \usepackage{arydshln}
- \usepackage{caption}
- \usepackage{graphicx}
- \usepackage{hhline}
- \usepackage{longtable}
- \usepackage{multirow}
- \usepackage[dvipsnames,table]{xcolor}
- \makeatletter
- \newcommand*\vdashline{\rotatebox[origin=c]{90}{\$\dabar@\dabar@\dabar@\$}}
- \makeatother
---
```{r}
library(pixiedust)
library(RColorBrewer)
data(iris)
output <- iris[c(1:5,70:75, 120:125),]
dust(output) %>%
sprinkle_table(pad = 3) %>%
sprinkle(
cols = "Species",
bg = c(rep("rgb(249,118,110)", sum(output$Species == "setosa")),
rep("rgb(1,186,56)", sum(output$Species == "versicolor")),
rep("rgb(98,156,255)", sum(output$Species == "virginica"))),
recycle = "rows"
) %>%
sprinkle(
cols = c("Sepal.Length", "Sepal.Width"),
rows = which(with(output, Sepal.Width > Sepal.Length - 2.25)),
bg = "#7D00FF"
) %>%
sprinkle(
cols = "Petal.Length",
bg = cut(output$Petal.Length, breaks = 9,
labels = brewer.pal(9, "BrBG")) %>%
as.character(),
recycle = "rows"
) %>%
medley_bw()
```