jza*_*dra 4 r knitr kableextra kable
我想在kable/中使用条件格式kableExtra根据行中的范围为值着色。我找到了很多关于如何通过列中的值来完成此操作的示例,但我很难按行来完成此操作。
以下是列值的示例:
require(tidyverse)
require(knitr)
require(kableExtra)
iris[1:10, ] %>%
mutate_if(is.numeric, function(x) {
cell_spec(x, bold = T,
color = spec_color(x, end = 0.9),
font_size = spec_font_size(x))
}) %>%
mutate(Species = cell_spec(
Species, color = "white", bold = T,
background = spec_color(1:10, end = 0.9, option = "A", direction = -1)
)) %>%
kable(escape = F, align = "c") %>%
kable_styling(c("striped", "condensed"), full_width = F)
Run Code Online (Sandbox Code Playgroud)
但是,我希望颜色由每行中的值范围确定。当然,在此示例中,第一列始终是最大的,最后一列是最小的,因此它们都会朝那个方向移动,但在我的实际数据中,最高值和最低值的位置位于每行的不同列中。
您可以apply按行使用值
df = head(iris,10)
fn = function(x) cell_spec(x, bold = T, color = spec_color(x, end = 0.9),
font_size = spec_font_size(x))
df[, 1:4] = t(apply(df[,1:4], 1, fn))
df %>%
kable(escape = F, align = "c") %>%
kable_styling(c("striped", "condensed"), full_width = F)
Run Code Online (Sandbox Code Playgroud)