问题描述
假设一个数据框如下:
df <- structure(list(week1 = c(30,74.62,189.93,2394.91,6095.8,2.88,45.49),week2 = c(30,88.4,156.14,2880.4,5087.41,7.98,44.97),change = structure(c(0,-0.1559,0.2164,-0.1685,0.1982,-0.6391,0.0114),formattable = list(formatter = "formatC",format = list(format = "f",digits = 2L),preproc = "percent_preproc",postproc = "percent_postproc"),class = c("formattable","numeric"))),row.names = c("v1","v2","v3","v4","v5","v6","v7"),class = "data.frame")
formattable(df,list(~ formatter("span",style = x ~ formattable::style(display = "block","border-radius" = "10px","padding" = "10px","text-align" = "center")),week2 = color_tile("white","orange"),week1 = color_tile("white",`change` = formatter("span",style = ~ style(color = ifelse(`week2` > `week1`,"green","red"),"font.weight" = "bold","font.size" = "16px"),~ icontext(sapply(`change`,function(x) if (x < 0) "arrow-down" else if (x > 0) "arrow-up" else ""),`change`))))
出:
我可以为 change
列的值设置字体大小,但现在我想将其应用于包括行名称在内的整个表格,我该怎么做?谢谢。
解决方法
您可以在 table.attr
参数中全局定义表格的字体大小。
您可以通过在 formatter
参数中定义字体大小来覆盖某些列的这些设置。就像您对 change
列所做的一样。
在下面的示例中,表格字体大小设置为 16px,就像 change
列一样。
df <- data.frame(week1 = c(30,74.62,189.93,2394.91,6095.8,2.88,45.49),week2 = c(30,88.4,156.14,2880.4,5087.41,7.98,44.97),change = c(0,-0.1559,0.2164,-0.1685,0.1982,-0.6391,0.0114))
rownames(df) <- LETTERS[1:7]
formattable(df,list(week2 = color_tile("white","orange"),week1 = color_tile("white",`change` = formatter("span",style = ~ style(color = ifelse(`week2` > `week1`,"green","red"),"font.weight" = "bold","font.size" = "16px"),~ icontext(sapply(`change`,function(x) if (x < 0) "arrow-down" else if (x > 0) "arrow-up" else ""),`change`))),table.attr = 'style="font-size: 16px;";\"')