Given a dataframe as follows:
df <- structure(list(` ` = c("v1", "v2", "v3", "v4", "v5", "v5", "v6", "v7", "v8",
"v9", "v10"), last_week = c(10, 31.34, 85.86,
3375.01, 7721.54, 9, 18.28, 58.84, 6177.73, 19890.55, 36.35),
this_week = c(27, 47.25, 99.4, 2253.04, 4861.4, 20, 43.04, 52.89,
2395.22, 2943.64, 12.67), pct = structure(c(1.7, 0.5077,
0.1577, -0.3324, -0.3704, 1.2222, 1.3545, -0.1011, -0.6123,
-0.852, -0.6515), formattable = list(formatter = "formatC",
format = list(format = "f", digits = 2L), preproc = "percent_preproc",
postproc = "percent_postproc"), class = c("formattable",
"numeric"))), class = "data.frame", row.names = c(NA, -11L
))
I try to use 0.2.1
version of formattable
package to create a stylish table:
library(formattable)
formattable(df,
list(
~formatter("span",
style = x ~ formattable::style(display = "block",
"border-radius" = "2px",
"padding" = "2px",
"text-align" = "left")
),
last_week = color_tile("#DeF7E9", "#FA614B"),
this_week = color_tile("#DeF7E9", "#FA614B"),
`pct` = formatter("span",
style = ~ style(color = ifelse(`this_week` > `last_week`, "red", "green")),
~ icontext(sapply(`pct`, function(x) if (x < 0) "arrow-down" else if (x > 0) "arrow-up" else ""), `pct`)))
)
Out:
But as you can see, the this_week
and last_week
columns are not regular numbers.
It has worked out before, but it seems error raised after I updated packages.
Anyone knows how can I deal with this issue? Thanks.
I managed to solve your problem by changing formatter parameter changing ~ by df= :