我正在寻找一种直接的方法来将数字的格式更改为闪亮的dataTable中的K,M。最好使用 formatCurrency 之类的东西。我不想写k,m函数将数字转换为字符串以进行格式化,因为它很难按值对行进行排序。
答案 0 :(得分:2)
没有内置的方法可以做到这一点,但是在JavaScript中编写自己的格式函数并不会破坏行排序也不算太糟糕。
请参阅DT文档中的列呈现,了解如何执行此操作:https://rstudio.github.io/DT/options.html
这也有助于: https://datatables.net/reference/option/columns.render
这是一个自定义千位格式化程序的示例,它会舍入到小数点后1位:
library(DT)
formatThousands <- JS(
"function(data) {",
"return (data / 1000).toFixed(1) + 'K'",
"}")
datatable(datasets::rock, rownames = FALSE, options = list(
columnDefs = list(list(
targets = 0:1, render = formatThousands
))
))
答案 1 :(得分:0)
或者,如果你想要一个非 JavaScript 方法,你可以使用与 reactable 包一起使用的 colFormat 函数。不幸的是,没有自动百万选项,但如果您分割原始数据并使用 colFormat 添加标签,则很容易复制。
Product <- c('Apples','Oranges','Pears')
Revenue <- c(212384903, 23438872, 26443879)
df <- data.frame(Product,Revenue)
df$Revenue_millions <- dfeg$Revenue/1000000
reactable(df,
showSortable = TRUE,
columns = list(
Revenue_millions = colDef(format = colFormat(prefix = "£", separators = TRUE,digits=1,suffix = "m"))))
数据现在应该正确排序