我有一个使用 DT
包显示数据表的 Shiny 应用程序。我想要的是能够以自定义方式格式化列。例如,我希望货币值显示为:1,234.50€ 而不是 DT
-way,它显示为 $1,234.5(注意符号的变化、货币符号的位置以及后面的数字)小数点)。
MWE 看起来像这样:
library(shiny)
library(DT)
shinyApp(
# UI
ui = fluidPage(DT::dataTableOutput('tbl')),
# SERVER
server = function(input, output) {
dat <- data.frame(cur = 1234.5, # supposed to be displayed as: 1,234.50€ | Bad!
# displayed as $1,234.5
perc = 0.123456, # 12.34% | Good!
num = 1000) # 1,000 | Bad! displayed as 1000
# render DT
output$tbl = DT::renderDataTable(
datatable(dat) %>%
formatCurrency(c('cur'), "$") %>%
formatPercentage('perc', 2) %>%
formatRound('num', digits = 0)
)
}
)
它做得相当不错,但是,当将货币符号更改为
€
时,符号消失了。当插入另一个像“E”这样的字符时,该字符仍然显示在开头而不是结尾。此外,数值没有得到“大标记”。有任何想法吗?
最佳答案
您可以从数据表包中更改 .js 文件中货币符号的位置。
编辑 DTWidget.formatCurrency 函数的行
$(thiz.api().cell(row, col).node()).html(currency + markInterval(d, interval, mark));
简单地
$(thiz.api().cell(row, col).node()).html(markInterval(d, interval, mark) + currency);
在 R 库目录中的 DT/htmlwidgets/datatables.js 文件中。
至于€符号,
formatCurrency(c('cur'), currency = "\U20AC", interval = 3, mark = ",", digits = 2)
对我有用吗,那是你尝试过的,但没有看到任何符号?
关于r - DT 在 Shiny 和 R : Custom number formatting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33171279/