You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:27:04