【问题标题】:R: conditional highlighting kableR: 条件高亮 kable
【发布时间】:2018-07-25 00:55:36
【问题描述】:

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

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))

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

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

Example

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

data %>%
  column_spec(X1, color = "red") %>%
  column_spec(X2, color = "red")

......

谢谢!

【问题讨论】:

    标签: r latex kable


    【解决方案1】:

    您可以执行以下操作

    ---
    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()
    ```
    

    这会产生


    更新

    或者改变文字和背景颜色

    ---
    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()
    ```
    

    【讨论】:

    • 非常感谢 Maurits!最后一个后续问题:是否可以更改单元格颜色(如背景颜色)而不是文本颜色?
    • @RachelZhang 当然,你可以通过cell_spec参数background改变背景颜色;我已经更新了我的答案以显示一个例子。请看一看。
    猜你喜欢
    • 1970-01-01
    • 2020-01-21
    • 2015-12-23
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    相关资源
    最近更新 更多