首页 > 解决方案 > 可格式化的绝对值(忽略符号)

问题描述

我正在尝试在“a”列上使用 color_tile,并试图找出如何忽略该符号,或使用“c”列中的样式(a 的绝对值,用 隐藏 c 之后c=FALSE)。

我见过它使用列'c'的例子,但它使用if语句中的实际值而不是样式,或者没有手动输入的数字。所以我想要的是 -5 有最深的绿色,而 1 没有颜色。

我所拥有的是

formattable(table, list(a=color_tile("transparent", "green"), 
b=color_tile("transparent","green"),
c=color_tile("transparent","green")))

任何人都可以帮忙吗?

我目前拥有的

编辑 数据:

table <- data.frame("a"=c(1,-5,3,-2), "b"=c(4,-2,1,5), "c"=c(1,5,3,2))

标签: rhtml-tableformattable

解决方案


基于格式化程序的自己的列值

formatter_tile = formatter("span",
                 style = x ~ style(display = "block", 
                                padding = "0 4px", 
                                `border-radius` = "4px", 
                                `background-color` = ifelse(x == 1, 
                                                            "transparent",
                                                            csscolor(gradient(as.numeric(abs(x)), "lightgreen", "darkgreen")))))

基于另一列值的格式化程序(b 基于 c)

formatter_tile_from_c = formatter("span",
                                   style = x ~ style(display = "block", 
                                                     padding = "0 4px", 
                                                     `border-radius` = "4px", 
                                                     `background-color` = ifelse(df$c == 1, 
                                                                                 "transparent",
                                                                                 csscolor(gradient(as.numeric(abs(df$c)), "lightblue", "darkblue")))))

代码

df <- data.frame( a = c(-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5),
                  b = 1,
                  c = c(5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5))

formattable(df, 
            list(a = formatter_tile,
                 b = formatter_tile_from_c))

输出 在此处输入图像描述


推荐阅读