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

在Shiny应用的DT::datatable()中移除带千位分隔符数值的小数部分

在Shiny应用的DT::datatable()中移除带千位分隔符数值的小数部分

嗨,我看你已经成功给表格里的数值加上了千位分隔符,现在想去掉多余的小数部分对吧?其实只需要在你当前用的格式化函数里加一个小参数就能搞定,给你两种可行的方案:

方案一:修改现有formatCurrency()函数

你可以直接在formatCurrency()里添加digits = 0参数,这个参数用来控制显示的小数位数,设为0就会完全隐藏小数部分:

server <- function(input, output) {
  iris <- iris[,1:4]*100000
  
  output$table <- renderDataTable({
    datatable(iris) %>%
      formatCurrency(columns = c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width"), 
                     currency = "", 
                     interval = 3, 
                     mark = ".",
                     digits = 0) %>% # 新增该参数,设置小数位数为0
      formatStyle(columns = c("Sepal.Length"))
  })
}

方案二:改用formatNumber()函数

因为你不需要显示货币符号,用formatNumber()会更贴合纯数字格式化的场景,用法和formatCurrency()类似,同样通过digits = 0来隐藏小数:

server <- function(input, output) {
  iris <- iris[,1:4]*100000
  
  output$table <- renderDataTable({
    datatable(iris) %>%
      formatNumber(columns = c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width"), 
                   interval = 3, 
                   mark = ".",
                   digits = 0) %>%
      formatStyle(columns = c("Sepal.Length"))
  })
}

两种方法都能实现你要的效果,如果你本身的数据是整数类型,也可以先把数据转换成整数(比如iris <- as.integer(iris[,1:4]*100000)),但用格式化函数的方式更灵活,不管原始数据有没有小数,都能统一显示成无小数的千位分隔格式。

备注:内容来源于stack exchange,提问作者firmo23

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 15:32:32