R语言formattable包如何将小数点分隔符从点替换为逗号?
解决方法
直接调整formattable::comma()的内置参数即可实现需求,原生支持%>%管道运算符,无需额外改造代码。
你只需要在原有comma()函数的参数中新增decimal.mark = ","指定十进制分隔符即可,修改后的完整代码如下:
library(dplyr) library(formattable) 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) # 仅新增decimal.mark = ","参数即可 aa2 <- aa2 %>% mutate(across(v:t, ~ formattable::comma(., digits = 2, big.mark = "", decimal.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") ))
如果需要多次使用该格式,可提前封装自定义函数简化后续调用:
# 提前封装自定义格式函数 custom_num_format <- function(x) { formattable::comma(x, digits = 2, big.mark = "", decimal.mark = ",") } # 后续管道中直接调用即可 aa2 <- aa2 %>% mutate(across(v:t, custom_num_format))
该方案仅修改数值的显示格式,不会改变原始数值的存储逻辑,color_tile的颜色映射规则完全不受影响。
内容的提问来源于stack exchange,提问作者wesleysc352
相关产品推荐
相关产品推荐

