在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
相关产品推荐
相关产品推荐

