问题描述
我正在尝试在“a”列上使用 color_tile 并且我正在尝试找出如何忽略符号或使用“c”列中的样式(a 的绝对值,在之后隐藏 c与c=FALSE
)。
我见过使用列 'c' 的例子,但它使用 if 语句中的实际值而不是样式,或者没有手动输入的数字。所以我想要的是 -5 有最深的绿色,1 没有颜色。
我拥有的是
formattable(table,list(a=color_tile("transparent","green"),b=color_tile("transparent",c=color_tile("transparent","green")))
有人可以帮忙吗?
编辑 数据:
table <- data.frame("a"=c(1,-5,3,-2),"b"=c(4,-2,1,5),"c"=c(1,5,2))
解决方法
基于格式化程序自己的列值
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",`background-color` = ifelse(df$c == 1,csscolor(gradient(as.numeric(abs(df$c)),"lightblue","darkblue")))))
代码
df <- data.frame( a = c(-5,-4,-3,-2,-1,1,2,3,4,5),b = 1,c = c(5,5))
formattable(df,list(a = formatter_tile,b = formatter_tile_from_c))