该gt
软件包使用户可以根据有关行的条件语句轻松格式化单元格。我正在寻找一种基于单元格中的值格式化每个单元格的方法。
这就是我的意思。在下表中,我想用 S&P 值按其包含的值对每个单元格进行着色。
library(gt)
library(dplyr)
library(tidyr)
# some arbitrary values of the S&P 500
jan08 <- sp500 %>%
filter(between(date, as.Date("2008-01-01"), as.Date("2008-01-15"))) %>%
select(date, open, high, low, close)
gt(jan08)
此函数将每个值的相应颜色名称作为字符串返回。
## this is the range of values
sp500.range <- jan08 %>% pivot_longer(cols = c(open, high, low, close))
heat_palette <- leaflet::colorNumeric(palette = "YlOrRd",
domain = sp500.range$value)
# For example:
> heat_palette(1411.88)
[1] "#FEB852"
每个单元格都可以手动着色,但这显然不实用。
gt(jan08) %>%
tab_style(style = cell_fill(color = heat_palette(1411.88)),
locations = cells_body(columns = "open",
rows = (open == 1411.88)))
有没有办法使用该tab_style
函数根据单元格的值有条件地填充单元格?