I have a database and I presented this data using the formattable()
package. But in my country we use the comma as decimal separator, unlike the standard point used by R.
How could I change it more simply, using the %>%
operator if possible
aa2<-read.table(text="Ano v u a p ur h e t
2005 1782135.22 113711.81 98964.84 2207446.25 3876.68 7085.74 3265.89 59030602.87
2006 1719687.83 167937.4 97068.3 2218090.61 3936.55 6811.86 2952.21 59030602.87
2007 1755637.78 122799.6 94299.72 2229590.5 3978.23 6858.66 3171.66 59030602.87
2008 1779051.85 97385.73 101739.73 2225127.88 3996.84 6929.01 2254.58 59030602.87
2009 1805123.7 74061.79 109175.68 2215819.96 4126.57 6771.5 1406.21 59030602.87
2010 1716896.85 168013.92 108014.05 2210652.42 4210.9 7162.69 1535.68 59030602.87
2011 1736892.8 151980.31 113991.8 2200158.22 4259.77 7759.18 1442.06 59030602.87
2012 1757330.63 133273.24 125825.1 2185550.21 4419.45 8129.58 1958.48 59030602.87
2013 1639912.63 248584.77 140183.71 2171799.74 4531.06 8687.48 2777.32 59030602.87
2014 1657021.54 227375.14 180036.19 2136407.51 4631.85 8724.39 2287.94 59030602.87
2015 1720644.41 151089.44 190536.46 2138270.92 4733.71 8911.75 2298.34 59030602.87
2016 1662281.39 202916.33 210776.21 2124964.42 4803.06 8575.97 2165.52 59030602.87
2017 1716427.7 136156.44 230587.13 2117936.68 4809.71 8386.94 2170.25 59030602.87
2018 1638715.79 204483.2 255703.3 2101912.82 4931.96 8366.64 2349.4 59030602.87
", sep="", header = TRUE)
aa2 <- aa2 %>%
mutate(across(v:t, ~ formattable::comma(., digits = 2, big.mark = "")))
formattable::formattable(aa2, list(
'v' = color_tile("#00cccc","#0066cc"),
'u' = color_tile("#00cccc","#0066cc"),
'a' = color_tile("#00cccc","#0066cc"),
'p' = color_tile("#00cccc","#0066cc"),
'ur' = color_tile("#00cccc","#0066cc"),
'h' = color_tile("#00cccc","#0066cc"),
'e'= color_tile("#00cccc","#0066cc")
))
You could achieve your desired result by setting decimal.mark = ","
:
library(formattable)
library(dplyr)
aa2 <- aa2 %>%
mutate(across(v:t, ~ formattable::comma(., digits = 2, decimal.mark = ",", big.mark = "")))
formattable::formattable(aa2, list(
'v' = color_tile("#00cccc","#0066cc"),
'u' = color_tile("#00cccc","#0066cc"),
'a' = color_tile("#00cccc","#0066cc"),
'p' = color_tile("#00cccc","#0066cc"),
'ur' = color_tile("#00cccc","#0066cc"),
'h' = color_tile("#00cccc","#0066cc"),
'e'= color_tile("#00cccc","#0066cc")
))