gpt4 book ai didi

r - KableExtra 条件格式化列上的特定行

转载 作者:行者123 更新时间:2023-12-04 14:23:37 25 4
gpt4 key购买 nike

我刚刚学习了 KableExtra 并且知道如何使用 mutate() 有条件地格式化整个列,如使用 mutate 的文档中所述,例如:

mutate(
mpg = cell_spec(mpg, background = ifelse(mpg > 20, "red", "blue"))
)

但我不知道的是,如何在显示所有行的同时更改每列中仅某些行的背景颜色。

例如,我的数据:
df <- data.frame( region1 = c("A", sample(1:5,3)),
region2 = c("B", sample(1:5,3)),
region3 = c("C", sample(1:5,3)),
region4 = c("A", sample(1:5,3)) )

现在我只想格式化第二行和第三行。我不想更改第一行和最后一行的颜色背景。这些第二行和第三行在大于 1 时应为“红色”,在等于 1 时为黄色,在小于 1 时为绿色。

有人可以帮我这个吗?

最佳答案

这是一个示例,它根据值忽略第一行和最后一行以及颜色,就像您说的那样,但忽略字母。

首先,我加载库。

# Load libraries
library(knitr)
library(kableExtra)

接下来,我创建了一个虚拟数据框。
# Create data frame   
df <- data.frame( region1 = c(sample(c(-5:5, letters[1:5]), 10, replace = TRUE)),
region2 = c(sample(c(-5:5, letters[1:5]), 10, replace = TRUE)),
region3 = c(sample(c(-5:5, letters[1:5]), 10, replace = TRUE)),
region4 = c(sample(c(-5:5, letters[1:5]), 10, replace = TRUE)), stringsAsFactors = FALSE )

在这里,我定义了格式化单元格的函数。我忽略第一行和最后一行并检查字符是字母还是数字,然后相应地着色。
foo <- function(x, n, nmax){
cell_spec(x, background = ifelse(is.na(as.numeric(x)), "white",
ifelse(n == nmax | n == 1, "white",
ifelse(x > 1, "red",
ifelse(x < 1, "green", "yellow")))))
}

最后,我应用了这个函数。
df %>% 
mutate_all(funs(foo(., n = row_number(), nmax = n()))) %>%
kable(escape = FALSE) %>%
kable_styling()

关于r - KableExtra 条件格式化列上的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50665721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com