R: 条件高亮 kable

Rac*_*ang 3 latex r kable

假设我有一个这样的矩阵:

set.seed(1234)
x = rnorm(10, mean=0, sd=1)
y = rnorm(10, mean=0, sd=1)
z = rnorm(10, mean=0, sd=1)
data=data.frame(rbind(x,y,z))
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在不指定列的情况下突出显示所有某些单元格(例如在这种情况下为 >0)?

我的预期结果是这样的(仅突出显示正值):

例子

在实际情况下,我有大约 30 列,如果我尝试对每一列进行 column_spec 一一列,它会筋疲力尽:

data %>%
  column_spec(X1, color = "red") %>%
  column_spec(X2, color = "red")
Run Code Online (Sandbox Code Playgroud)

......

谢谢!

Mau*_*ers 7

您可以执行以下操作

---
title: "Untitled"
output:
  html_document: default
---    

```{r warning=FALSE, message=FALSE, echo=FALSE}
set.seed(1234)
x = rnorm(10, mean=0, sd=1)
y = rnorm(10, mean=0, sd=1)
z = rnorm(10, mean=0, sd=1)
data=data.frame(rbind(x,y,z))

library(knitr)
library(kableExtra)
library(tidyverse)

data %>% 
    mutate_all(~cell_spec(.x, color = ifelse(.x < 0, "red"," black"))) %>%
    kable(escape = F) %>%
    kable_styling()
```
Run Code Online (Sandbox Code Playgroud)

这产生

在此处输入图片说明


更新

或更改文本和背景颜色

---
title: "Untitled"
output:
  html_document: default
---


```{r warning=FALSE, message=FALSE, echo=FALSE}
set.seed(1234)
x = rnorm(10, mean=0, sd=1)
y = rnorm(10, mean=0, sd=1)
z = rnorm(10, mean=0, sd=1)
data=data.frame(rbind(x,y,z))

library(knitr)
library(kableExtra)
library(tidyverse)

data %>% 
    mutate_all(~cell_spec(
        .x, 
        color = ifelse(.x < 0, "white", "white"),
        background = ifelse(.x < 0, "red"," black"))) %>%
    kable(escape = F) %>%
    kable_styling()
```
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明